Изменение JPanel при нажатии JButton в Swing с помощью графического интерфейса IntelIJ IDEA

Я работаю с IntelIJ и пытаюсь сделать следующее:

https://stackru.com/images/03f1d58176f5dd68f509308613ac3d529f702f5c.png

При нажатии на кнопку Panel1 правый JPanel должен включить Panel1 и аналогично кнопке Panel2, но в результате появляется небольшой квадрат.

Код:

GridBagLayout layout = new GridBagLayout();
Panel1 p1;
Panel2 p2;
private JButton panel1Button;
private JButton panel2Button;
private JPanel DynamicPanel;
private JPanel mainPanel;

public Frame1(){
    p1 = new Panel1();
    p2 = new Panel2();

    DynamicPanel.setLayout(layout);
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;
    DynamicPanel.add(p1);
    c.gridx = 0;
    c.gridy = 0;
    DynamicPanel.add(p2);
    p1.setVisible(false);
    p2.setVisible(false);

    panel1Button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Button1");
            p1.setVisible(true);
            p2.setVisible(false);
        }
    });
    panel2Button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Button2");
            p1.setVisible(false);
            p2.setVisible(true);
        }
    });
}

Я также хочу разделить панели p1 и p2 на разные классы. Panel1 и Panel2 выглядит так:

https://stackru.com/images/15726353c439454c35d1913995e0cf8883391993.png

1 ответ

При нажатии на кнопку Panel1 правый JPanel должен включить Panel1 и аналогично кнопке Panel2

Тогда панель справа должна использовать CardLayout, Тогда вы можете просто поменять панель, нажав на кнопку.

Прочитайте раздел учебника Swing о том, как использовать CardLayout для получения дополнительной информации и рабочих примеров.

Другие вопросы по тегам