我在Java中使用JLists时遇到问题。我已经观看了有关如何使用它们的视频教程,但它们都使用了某种布局。我想拥有它所以" setPreferedLayout"为null,我可以使用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(设置其界限并将其添加到面板中)当我没有编程时它不会显示...
答案 0 :(得分:1)
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()不可行。你应该做的最后一件事是设置Visible。