我在 Java 中使用 JList 时遇到问题。我看过有关如何使用它们的视频教程,但它们都以某种布局来使用它们。我希望它的“setPreferedLayout”为空,并且我可以使用 setBounds 方法来决定我的列表和按钮在窗口上的位置。当我这样做时,我执行诸如frame.add(list)或panel.(list)之类的操作将其添加到我的面板中,它不会显示在窗口上,但我的按钮会显示。
我有这样的东西:
//DECLARATION
JFrame f = new JFrame("main Window");
JPanel p = new JPanel();
int WIDTH = 800;
int HEIGHT = 650;
public static JList mainList;
String[] mainArray = {"one","two","three"};
//INIT
public mainClass() {
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(p);
f.setVisible(true);
p.setLayout(null);
p.setPreferredSize( new Dimension(WIDTH,HEIGHT) );
f.pack();
p.setVisible(true);
p.setFocusable(true);
System.setProperty("sun.java2d.opengl","true");
Thread thr1 = new Thread (r1);
thr1.start();
mainList = new JList(mainArray);
mainList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
mainList.setSelectedIndex(0);
mainList.setVisibleRowCount(3);
JScrollPane listScrollPane = new JScrollPane(mainList);
}
再次,我正在尝试创建一个 JList,我可以将其放在我想要的任何位置。这基本上就是我想要得到的。每当我尝试以 Jbuttons 的工作方式对其进行编辑(设置其边界并将其添加到面板)时,当我运行程序时它不会显示...
最佳答案
public mainClass() {
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainList = new JList(mainArray);
mainList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
mainList.setSelectedIndex(0);
mainList.setVisibleRowCount(3);
JScrollPane listScrollPane = new JScrollPane(mainList);
p.add(listScrollPane);
f.add(p);
p.setPreferredSize( new Dimension(WIDTH,HEIGHT) );
f.pack();
f.setVisible(true);
p.setFocusable(true);
System.setProperty("sun.java2d.opengl","true");
Thread thr1 = new Thread (r1);
thr1.start();
}
这应该可以工作,你从来没有将你的列表添加到面板中,而且你设置比 pack() 可见,那是行不通的。您应该做的最后一件事是设置可见。
关于java - 如何在 JPanel 内部使用 JList 以便设置列表的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685207/