gpt4 book ai didi

java - 一个 JFrame 和两个 JPanel

转载 作者:行者123 更新时间:2023-12-02 06:22:00 24 4
gpt4 key购买 nike

我是 Java 新手,我有一个关于面板的问题。我的程序中有一个 JFrame 和两个 JPanel

  • 当我点击button1时,panel1将显示在框架中。
  • 当我点击button2时,panel2将显示在框架中,而panel1将消失/隐藏。

问题是 panel1 无法仅显示 panel2。如何以这种方式显示两个面板?

这是我的代码:

public class test{

public static void main(String args[]){

JButton b1 = new JButton("show p1");
JButton b2 = new JButton("show p2");
JLabel l1 = new JLabel("This is p1");
JLabel l2 = new JLabel("This is p2");

final JPanel p1 = new JPanel(new FlowLayout());
p1.add(l1);
final JPanel p2 = new JPanel(new FlowLayout());
p2.add(l2);
JPanel buttonPNL = new JPanel(new FlowLayout());
buttonPNL.add(b1);
buttonPNL.add(b2);

b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
p1.setVisible(true);
p2.setVisible(false);
}
});

b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
p1.setVisible(false);
p2.setVisible(true);
}
});

JFrame frm = new JFrame();
frm.setLayout(new BorderLayout());
frm.add(p1,BorderLayout.CENTER);
frm.add(p2,BorderLayout.CENTER);
frm.add(buttonPNL,BorderLayout.SOUTH);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(300,300);
}
}

最佳答案

BorderLayout 每个约束只能处理一个组件,也就是说,当您在 CENTER 添加 p2 时,p1 就被忘记了。因此,要么在你的actionListeners中进行删除/添加,要么使用另一个LayoutManager,比如f.i. CardLayout .

关于java - 一个 JFrame 和两个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com