0

我想知道是否有一种方法可以重用 jframe 而无需使其成为新的。你可能想知道为什么。我有两个 JFrame(实际上更多,但出于这个问题的目的,两个)。一个包含一个单选按钮(同意),其中的条款和条件写在 jtextarea 中。另一个JFrame包含一个passwordtxtarea(密码),一个jtextarea(用户名)和一个单选按钮(阅读条款和条件),以及一个“条款和条件”按钮。我忘了提到第一个jtextarea包含一个“返回”jbutton,如果我按下,我会得到 JFrame2,当我按下“条款和条件”时,我会得到 JFrame1。问题是,我的代码需要点击“同意”和“阅读条款”单选按钮,但每当我按下“返回”或“条款和条件”时,我输入的任何输入(用户名、密码,单击默认以外的单选按钮)丢失。因此我无法继续我的程序。

我认为这与我必须制作一个新的 JFrame 表单有关。也许它将其设置回默认值?无论如何,我该如何解决这个问题?我还没有见过这样的问题,那么除了“不可能”之外,是否有一个我看不到的明显答案?

4

1 回答 1

5

你说/我回答:

我想知道是否有一种方法可以重用 jframe 而无需使其成为新的。

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

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

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

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

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

如果我按下,我会得到 JFrame2,当我按下“条款和条件”时,我会得到 JFrame1。问题是,我的代码需要点击“同意”和“阅读条款”单选按钮,但每当我按下“返回”或“条款和条件”时,我输入的任何输入(用户名、密码、点击非默认单选按钮)丢失。因此我无法继续我的程序。

是的,您不应该在这里创建新组件,而应该重用以前创建的组件。如果您将组件设为类字段并且确保只创建一次,这一切都是可行的。这就是你如何编码它。

我认为这与我必须制作一个新的 JFrame 表单有关。也许它将其设置回默认值?无论如何,我该如何解决这个问题?我还没有见过这样的问题,那么除了“不可能”之外,是否有一个我看不到的明显答案?

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

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

于 2013-11-03T00:56:18.940 回答