如何重新使用jframe而不使其成为新的?

时间:2013-11-03 00:47:49

标签: java swing netbeans jframe

我想知道是否有办法重用jframe而不是新的。你可能想知道为什么。我有两个JFrame(实际上更多,但为了这个问题的目的,两个)。一个包含一个单选按钮(同意)与jtextarea中的条款和条件。其他JFrame包含passwordtxtarea(密码),jtextarea(用户名)和单选按钮(阅读条款和条件),以及“TermsAnd Conditions”按钮。我忘了提到第一个jtextarea包含一个“后退”jbutton,如果我按下,我得到JFrame2,当我按“条款和条件”时,我得到JFrame1。问题是,我的代码需要点击“同意”和“阅读条款”单选按钮,但每当我按“后退”或“条款和条件”时,我输入的任何输入(用户名,密码,单击默认值以外的单选按钮)将丢失。因此,我无法进入我的计划。

我认为这与我必须制作新的JFrame表格有关。也许它将它恢复到默认状态?无论如何,我该如何解决这个问题?我没有看到这样的问题,所以除了“这是不可能的”之外,还有一个我无法看到的明显答案吗?

1 个答案:

答案 0 :(得分:5)

你陈述/我回复:

  

我想知道是否有办法重用jframe而不是新的。

是的,很有可能重复使用组件(问题的概括)。

  

你可能想知道为什么。我有两个JFrame(实际上更多,但是对于这个问题的目的,两个)。

如前所述,这通常不是一个好主意。大多数Swing GUI应用程序只使用一个主窗口,JFrame,然后交换视图,如使用CardLayout或JTabbedPane,或显示模态或非模态对话框窗口。

  

一个包含一个单选按钮(同意),其中包含用jtextarea写的条款和条件。其他JFrame包含passwordtxtarea(密码),jtextarea(用户名)和单选按钮(阅读条款和条件),以及“TermsAnd Conditions”按钮。我忘了提到第一个jtextarea包含一个“背”jbutton,

对于JTextArea来说,拥有任何类型的按钮是最不寻常的。此外,没有“passwordtxtarea”这样的东西,也许你的意思是JPasswordField?如果是这样,请在此处提问时请准确说明您的条款。根据描述来猜测某个人的程序是什么样的很难,你不想让我们更难。此外,将JTextArea用于用户名字段非常不寻常,因为通常您使用的是JTextField。再一次,精确度非常重要。否则我们可能会给你错误的建议。

  

如果我按下,我得到JFrame2,当我按“条款和条件”时,我得到JFrame1。问题是,我的代码需要点击“同意”和“阅读条款”单选按钮,但每当我按“后退”或“条款和条件”时,我输入的任何输入(用户名,密码,单击默认值以外的单选按钮)将丢失。因此,我无法进入我的计划。

是的,您不应该在此处创建新组件,而是重新使用以前创建的组件。如果您将组件设为类字段并且确保仅创建一次,则可以执行此操作。这就是你编码的方式。

  

我认为这与我必须制作新的JFrame表格有关。也许它将它恢复到默认状态?无论如何,我该如何解决这个问题?我没有看到这样的问题,那么除了“这是不可能的”之外,是否有一个我无法看到的明显答案?

再次有可能。解决方案将取决于您的程序结构。

建议:将GUI代码用于制作JPanel,而不是JFrame。通过这种方式,您可以将它们放置在任何需要的地方 - 在JFrame,JDialog,另一个JPanel中,或者与CardLayout交换,...​​...在任何地方。它大大提高了程序的灵活性。