Как перерисовать JPanel в Java Swing
Формулировка задачи:
привет. как перерисовать содержимое JPanel?
например на панели1 есть лейблы,кнопки и филды. а на панели2 есть кнопка при нажатии которой с первой панели будет все удаляться и рисоваться новые кнопки и тд. можно ли такое реализовать?
Решение задачи: «Как перерисовать JPanel в Java Swing»
textual
Листинг программы
package main;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("My Frame");
frame.setLayout(new FlowLayout());
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
panel1.setBorder(BorderFactory.createEtchedBorder());
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.setBorder(BorderFactory.createEtchedBorder());
JLabel label1 = new JLabel("Label 1");
JLabel label2 = new JLabel("New label. Label 2");
JButton button = new JButton("Change");
button.addActionListener(e -> {
panel1.removeAll();
panel1.add(label2);
frame.repaint();
frame.revalidate();
frame.pack();
frame.setLocationRelativeTo(null);
});
panel1.add(label1);
panel2.add(button);
frame.add(panel1);
frame.add(panel2);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}