gpt4 book ai didi

Java Jbutton 链接到另一个 JPanel。 removeAll() 干扰窗口

转载 作者:行者123 更新时间:2023-12-01 23:07:09 24 4
gpt4 key购买 nike

当我执行此代码时,窗口似乎卡住了。我有2个方法。包含一个按钮的 viewOne 方法。当按下此按钮时,我想转到 viewAll 方法。他们都有不同的 JPanes。我知道该链接通过放入打印行来起作用。然而

canvas.removeAll(); 

似乎卡住了 window 。无法按下任何按钮,也不会发生任何事情。如果没有这一行,两个 Jpane(viewOne 和 viewAll)会并排显示。我想在按下按钮时关闭 viewOne JPane 并打开 viewAll JPane。请参阅下面的代码。 (请注意,代码中的缩进是正确的,在复制到此处时已移动。)

public class Contacts extends JFrame
{
public static Contacts cont;
public static JFrame canvas;

public static void main(String[] args)
{
cont = new Contacts();

canvas = new JFrame("Contacts");
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.show();
canvas.getContentPane().add(cont.viewOne());
canvas.pack();
}

private JPanel viewOne()
{
JPanel viewOnePanel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
viewOnePanel.setPreferredSize(new Dimension(500,500));
viewOnePanel.setBackground(Color.white);
c.fill = GridBagConstraints.HORIZONTAL;
//button for back
JButton back = new JButton("BACK");
back.setForeground(Color.black);
c.gridx = 0;
c.gridy = 1;
viewOnePanel.add(back, c);
back.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
canvas.getContentPane().add(cont.viewAll());

}});
return viewOnePanel;
}



private JPanel viewAll()
{
canvas.removeAll()
JPanel viewAllPanel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
viewAllPanel.setPreferredSize(new Dimension(500,500));
viewAllPanel.setBackground(Color.white);
c.fill = GridBagConstraints.HORIZONTAL;

那么我该如何解决这个问题呢?非常感谢任何帮助。谢谢

最佳答案

看起来您正在创建困惑的代码,包括不必要地重新创建已经存在的组件的代码,只需使用 CardLayout 即可轻松简单地修复这些组件。这将使您能够轻松、干净地交换 JPanel,而不会困惑或大惊小怪。

The CardLayout Tutorial

关于Java Jbutton 链接到另一个 JPanel。 removeAll() 干扰窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22592941/

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