Gặp khó trong Java Swing
Mình có các file Java sau:
JFrameA.java (extends JFrame)
JPanelB.java (extends JPanel) có add button B
JPanelC.java (extends JPanel)
Trên JFrameA đã có add một JPanelA và ở JPanelA có một JButton A. Mình set up button A sao cho khi click vào nó thì:
this.remove(JPanelA);
this.add(new JPanelB);
Bây giờ thì mình có JPanelB nằm trong JFrameA. Bây giờ mình muốn nếu mình click và button B thì JFrameA sẽ remove JPanelB và add(JPanelC). Nhưng như mình không biết gọi lại JFrameA như thế nào cả. Đây là giải pháp tạm thời của mình:
Mình set up trong button B như sau:
JFrameA fr = new JFrameA();
fr.remove(JPanelA); // vì JPanelA được add sẵn trong fr
fr.add(JPanelB);
fr.setVisible(true);
Cách này nó củng cho kết quả tương tự nhưng nó xuất hiện thêm một cửa sổ nữa, bên cạnh của sổ JFrameA mình run lúc đầu ( tộng cộng mình run JFrameA 2 lần).
Mình muốn có thể làm việc trên JFrameA ban đầu nhưng nghĩ mãi không ra. Ai có giải pháp cho vấn đề này không ạ.
Em cảm ơn.
Nó hiện cửa sổ mới vì bạn đã tạo 1 Frame nữa trong sự kiện click.
Trường hợp này bạn cũng có thể dùng cardLayout
Hoặc đơn giản chỉ cần validate lại Frame