Как добавить несколько панелей с метками в один кадр?
Я изучаю Java Swings, и я создаю один фрейм, и я хочу добавить к нему более одной панели с разными ориентациями, как вы видите ниже в коде jpanet_1
а также jpanel_2
каждый из них имеет определенные размеры, установленные с помощью setBound()
метод.
Проблема во время выполнения, "Привет мир" появляется только на второй панели и не появляется на первой. Я попытался изменить порядок, в котором я добавляю две панели в основной кадр, следующим образом:
jFrame_2.add(jPanel_2);
jFrame_2.add(jPanel_1);
Но затем "привет мир" добавляется только в panel_2.
Пожалуйста, дайте мне знать, как добавить две панели в рамку, чтобы на обоих
Как вы видите в коде, например, указав размеры для каждой панели, которую я хочу добавить к фрейму, а затем добавлю его, есть ли другой рекомендуемый способ добавления панелей к фреймам?
КОД:
public class GUI_01 {
JFrame jFrame_1;
JFrame jFrame_2;
JPanel jPanel_1;
JPanel jPanel_2;
final JLabel jLabel_Hello = new JLabel("Hello World");
JOptionPane jOptions;
final String[] options = {"yes", "no", "maybe"};
public GUI_01() {
// TODO Auto-generated constructor stub
setUpGUI1();
setUpGUI2();
}
private void setUpGUI2() {
// TODO Auto-generated method stub
jFrame_2 = new JFrame("Border Demo");
jPanel_1 = new JPanel();
jPanel_2 = new JPanel();
jPanel_1.setBorder(BorderFactory.createTitledBorder("title"));
jPanel_1.setBounds(30, 100, 110, 300);
jPanel_1.add(jLabel_Hello);
jPanel_2.setBorder(BorderFactory.createLoweredBevelBorder());
jPanel_2.setBounds(20, 50, 120, 80);
jPanel_2.add(jLabel_Hello);
jFrame_2.setBounds(0, 0, 600, 600);
jFrame_2.add(jPanel_1);
jFrame_2.add(jPanel_2);
jFrame_2.setVisible(true);
}
2 ответа
проблема во время выполнения, "привет мир" появляется только на второй панели и не отображается в
Это правильно. Компонент может иметь только одного родителя.
Если вам нужен текст "Hello World", вам нужно создать два JLabels и добавить одну из меток на каждую панель.
JLabel label1 = new JLabel("Hello World");
JPanel panel1 = new JPanel();
panel1.add( label1 );
JLabel label2 = new JLabel("Hello World");
JPanel panel2 = new JPanel();
panel2.add( label2 );
Я пытался использовать gridlayout, но я не мог поместить jpanel в определенную ячейку gridlayout..
Вы не можете просто добавлять компоненты в случайные ячейки. У вас должны быть компоненты в каждой ячейке, или в случае GridBagLayout компонент может охватывать несколько ячеек.
Вы хотите использовать макет. Лично мой любимый макет - GridBagLayout, который позволяет вам точно выбирать, куда идти (например, в таблице с пользовательскими строками и столбцами). Вы можете узнать больше об этом здесь. Надеюсь, это поможет, и удачи.