Как использовать JList внутри JPanel, чтобы я мог установить границы списка?
У меня возникли проблемы с использованием JLists в Java. Я смотрел видеоуроки о том, как их использовать, но все они используют их с каким-то макетом. Я хотел бы иметь его так, чтобы "setPreferedLayout" был нулевым, и я могу использовать метод setBounds, чтобы решить, где мои списки и кнопки идут в окне. Когда я делаю это, и я делаю что-то вроде frame.add (список) или панель (список), чтобы добавить его на мою панель, он не отображается в окне, но моя кнопка делает.
У меня есть что-то вроде этого:
//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 (установка границ и добавление его на панель) не появляется, когда я запускаю его программу...
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();
}
это должно работать, вы никогда не добавляли свой список на панель, а также вы устанавливали visible, чем pack(), который не будет работать. Последнее, что вы должны сделать, это установить Visible.