有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java多GUI窗口创建

我用GridLayout(5,3)做了一个简单的GUI,它是动作执行的,并且还实现了动作监听器。这些是一些计算和算法,根据用户提供的输入或按钮工作。到目前为止,一切正常

在我的代码中的某个时刻,用户会得到一个弹出消息,表明他已使用此常用方法JOptionPane.showMessageDialog(....)正确登录到系统。我想要的是,在他按下OK按钮后,创建一个弹出的附加表单,它看起来与上面我用GridLayout(5,3)创建的表单类似,这样我的用户就可以存储关于他的附加信息

我真的无法让它工作,我也不知道如何开始

欢迎任何想法!干杯并提前感谢:)

如果添加以下内容:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Container pane = getContentPane();
            GridLayout grid=new GridLayout(10,1);
            pane.setLayout(grid);

它只会在我的gridlayout中添加更多行。以上所有按钮和标签都保留了下来。我怎样才能摆脱以前的标签和按钮


共 (1) 个答案

  1. # 1 楼答案

    你说:

    if add this:

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container pane = getContentPane();
    GridLayout grid=new GridLayout(10,1);
    pane.setLayout(grid);
    

    it only adds more lines to my gridlayout. And all above buttons and labels remains. How can i get rid of the previous labels and buttons?

    如果要在JFrame上交换“视图”,至少有三个选项

    • 如果您想对相同的JTextComponents使用相同的GUI,但组件中没有文本,那么您需要检查文本组件并对所有组件调用setText("")。如果您想保留相同的JButton和标签,但更改它们的文本,那么同样地,您需要遍历所有这些按钮并调用setText("something else")
    • 如果你想用全新的组件来替换旧的组件,我认为最直接的方法是使用CardLayout来保存你的JPanel,它包含了你所有的组件。当您想将JPanel换成另一个时,请确保已使用JPanel将新的JPanel添加到CardLayout中,然后在CardLayout对象上调用next()
    • 另一种方法是手动交换JFrame的contentPane持有的JPanel,方法是在contentPane上调用removeAll(),然后在其上调用add(nextJPanel),然后调用revalidate(),然后调用repaint()