不使用集合创建 JList
create JList without using collections
我的大学运动有问题。我需要创建一个 JList 并在其中放置一些元素(只是一个简单的文本)而不使用任何集合或数组。这很愚蠢,因为 JList 通常使用 DefaultListModel 初始化(它也是一个集合),但在这种情况下我不允许使用它。我试图将 JLabel 对象放入 JList 的参数化构造函数中,但它不起作用。你们中有人知道如何处理吗?非常感谢您的提前帮助。
到目前为止我的代码:
JFrame jFrame = new JFrame("title");
JList<String> jList = new JList<>();
jList.add(new JLabel("label1"));
jFrame.add(jList);
jFrame.setSize(500, 500);
jFrame.setVisible(true);
当我正确理解你的学术时,你只需要创建一个列表模型,它只是 returns 常量值或者可以使用公式计算行值。
这是我给你的建议。
import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class SimpleListExample implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new SimpleListExample());
}
@Override
public void run() {
JList<String> list = new JList<>(new SimpleListModel());
JFrame frame = new JFrame("List example");
frame.add(new JScrollPane(list));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(350, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
private static class SimpleListModel extends AbstractListModel<String> {
@Override
public int getSize() {
return 20;
}
@Override
public String getElementAt(int index) {
// Generate constant value with the row index ;)
return "It's row number: " + (index + 1);
}
}
}
我的大学运动有问题。我需要创建一个 JList 并在其中放置一些元素(只是一个简单的文本)而不使用任何集合或数组。这很愚蠢,因为 JList 通常使用 DefaultListModel 初始化(它也是一个集合),但在这种情况下我不允许使用它。我试图将 JLabel 对象放入 JList 的参数化构造函数中,但它不起作用。你们中有人知道如何处理吗?非常感谢您的提前帮助。
到目前为止我的代码:
JFrame jFrame = new JFrame("title");
JList<String> jList = new JList<>();
jList.add(new JLabel("label1"));
jFrame.add(jList);
jFrame.setSize(500, 500);
jFrame.setVisible(true);
当我正确理解你的学术时,你只需要创建一个列表模型,它只是 returns 常量值或者可以使用公式计算行值。
这是我给你的建议。
import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class SimpleListExample implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new SimpleListExample());
}
@Override
public void run() {
JList<String> list = new JList<>(new SimpleListModel());
JFrame frame = new JFrame("List example");
frame.add(new JScrollPane(list));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(350, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
private static class SimpleListModel extends AbstractListModel<String> {
@Override
public int getSize() {
return 20;
}
@Override
public String getElementAt(int index) {
// Generate constant value with the row index ;)
return "It's row number: " + (index + 1);
}
}
}