Контейнерные панели и JScrollPane
Я работаю над GUI, и я программист-любитель. У меня проблема с этим кодом. Я ничего не вижу на кадре.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1366, 768);
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
Container midPanel = new JPanel();
midPanel.setLayout(null);
Dimension preferredSize = new Dimension(700, 700);
midPanel.setPreferredSize(preferredSize);
.....
Container k1 = new JPanel();
k1.setSize(50, 700);
k1.setLocation(0, 0);
k1.setLayout(new GridLayout(rowNum, 1));
k1.setVisible(true);
midPanel.add(k1);
.......
Dimension jspD = new Dimension(500,500);
JScrollPane jsp = new JScrollPane(midPanel);
jsp.setPreferredSize(jspD);
jsp.setLocation(0, 0);
jsp.setVisible(true);
contentPane.add(jsp);
Буду признателен за вашу помощь.
1 ответ
Решение
midPanel.setLayout(null);
Вы всегда должны использовать менеджеры макетов, никогда не удаляйте макет по какой-либо причине, кроме случаев, когда у вас есть назначение, необходимое для использования абсолютного макета (нулевой макет).
Проблема заключается в абсолютном расположении, вы должны указать расположение компонентов внутри панели с помощью component.setBounds(x,y,width,height)
каждый раз, добавляя компонент, иначе он не будет виден.
Смотрите это руководство по использованию менеджеров по расположению.