Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多GUI窗口创建_Java_Swing_User Interface - Fatal编程技术网

Java多GUI窗口创建

Java多GUI窗口创建,java,swing,user-interface,Java,Swing,User Interface,我使用GridLayout(5,3)制作了一个简单的GUI,它是执行动作的,并且还实现了动作监听器。这些是一些计算和算法,它们根据用户提供的输入或按钮工作。到目前为止,一切正常 在我的代码中的某个时刻,用户会得到一个弹出消息,表明他已使用此常用方法正确登录到系统JOptionPane.showMessageDialog(..)。我所需要的是,在他按下OK按钮后,创建一个弹出的附加表单,它看起来与上面我用GridLayout(5,3)创建的表单相似,这样我的用户就可以存储关于他的附加信息 我真的不

我使用
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中添加更多的行。以上所有按钮和标签均保留。如何删除以前的标签和按钮?

您指出:

如果添加此项:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Container pane = getContentPane();
            GridLayout grid=new GridLayout(10,1);
            pane.setLayout(grid);
它只会在我的gridlayout中添加更多的行。以上所有按钮和标签均保留。如何摆脱以前的标签和按钮

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

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

      如果添加此项:

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  Container pane = getContentPane();
                  GridLayout grid=new GridLayout(10,1);
                  pane.setLayout(grid);
      
      它只会在我的gridlayout中添加更多的行。以上所有按钮和标签均保留。如何摆脱以前的标签和按钮

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

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

      您尝试过什么,但效果如何?把所有关于显示多个窗口的争论放在一边,我会让我的代码转向创建一个JPanel。然后我将主JPanel放在JFrame中。然后,如果我希望第二个窗口显示相同的GUI,我会在需要时创建一个新的主JPanel,并将其放入JDialog中。1+on@RaptorDotCpp的注释,如果只是为了et voilá,也是为了得到好的建议!哎呀,它去哪儿了?嗯,我看不出他的评论:SIt和我的很像。我的建议怎么样?好吧,我试试看。你试过什么,怎么不起作用?把所有关于显示多个窗口的争论放在一边,我会让我的代码转向创建一个JPanel。然后我将主JPanel放在JFrame中。然后,如果我希望第二个窗口显示相同的GUI,我会在需要时创建一个新的主JPanel,并将其放入JDialog中。1+on@RaptorDotCpp的注释,如果只是为了et voilá,也是为了得到好的建议!哎呀,它去哪儿了?嗯,我看不出他的评论:SIt和我的很像。那么我的建议呢?好吧,我试试看效果如何。