1

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

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

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

任何想法都非常受欢迎!提前干杯和感谢:)

如果添加这个:

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

它只会在我的网格布局中添加更多线条。以上所有按钮和标签仍然存在。我怎样才能摆脱以前的标签和按钮?

4

1 回答 1

1

你说:

如果添加这个:

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

它只会在我的网格布局中添加更多线条。以上所有按钮和标签仍然存在。我怎样才能摆脱以前的标签和按钮?

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

  • 如果您想使用相同的 GUI 和相同的 JTextComponents 但组件中没有文本,那么您需要检查您的文本组件并调用setText("")所有这些组件。如果您想保留相同的 JButton 和标签但更改它们的文本,那么同样您将需要通过所有调用setText("something else").
  • 如果您想要全新的组件来替换旧组件,我认为最直接的方法是使用 CardLayout 来保存包含所有组件的 JPanel。当您想将 JPanel 换成另一个时,请确保新的 JPanel 已添加到 CardLayout-using JPanel,然后在 CardLayout 对象上调用 next()。
  • 另一种方法是手动换出 JFrame 的 contentPane 持有的 JPanel,方法是先调用removeAll()contentPane,然后调用add(nextJPanel)它,然后revalidate()调用repaint().
于 2013-05-23T17:36:45.370 回答