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

标签 java swing netbeans jframe

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

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

最佳答案

你声明/我回复:

I was wondering if there was a way to reuse a jframe without making it new.

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

You might be wondering why. I have two JFrames (actually more, but for this question's purpose, two).

正如已经指出的,这通常不是一个好主意。大多数 Swing GUI 应用程序仅使用一个主窗口,即 JFrame,然后交换 View (例如与 CardLayout 或 JTabbedPane),或者显示模式或非模式对话框窗口。

One contains a radio button(agree) with the terms and conditions written in a jtextarea. THe other JFrame contains a passwordtxtarea(password), jtextarea(username) and a radio button(read terms and conditions), as well as a "TermsAnd Conditions" button. I forgot to mention that the first jtextarea contains a "back" jbutton,

JTextArea 具有任何类型的按钮都是最不寻常的。另外,没有“passwordtxtarea”之类的东西,也许您是指 JPasswordField?如果是这样,请在此处提问时准确说明您的条款。根据描述来猜测某人的程序是什么样子已经够困难的了,您不想让我们变得更困难。另外,将 JTextArea 用于用户名字段的情况非常少见,因为通常您会使用 JTextField。再次强调,精度确实很重要。否则我们可能会给您错误的建议。

that if i press on, I get JFrame2, when I press "Terms And Conditions", I get JFrame1. The problem is, that my code requires both "Agree" and "read the Terms" radio buttons to be clicked on, but whenever I press "back" or "Terms And Conditions", any input I had put in (username, password, clicks on radio button other than default) is lost. Therefore I cannot proceed in my program.

是的,您不应该在这里创建新组件,而应该重用以前创建的组件。如果您将组件设置为类字段并且确保仅创建一次,那么这一切都是可行的。这完全取决于你如何编码。

I think it has to do with the fact that I have to make a NEW JFrame Form. Maybe it sets it back to default? Anyway, how do I fix this problem? I haven't seen a question like this, so is there a blatantly obvious answer I'm unable to see, except for "it's impossible"?

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

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

关于java - 如何重用jframe而不使其成为新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748654/

相关文章:

java - 使用 AffineTransform 旋转图像

java - 如何防止 JTable 单元格开始编辑某些击键?

java - 如何在 Java Swing 可编辑组合框中注册 MouseClick 事件

ubuntu - Netbeans 无法在 ubuntu 中打开

java - 2D 平台游戏中的碰撞错误

java - 如何在测试中加载 spring HTTPInvoker 到 jetty?

java - 如何从 sqlite 中检索列并将其存储到数组中?

java - 无法在 Jpanel 上显示图像

java - 在netbeans中打开eclipse svn项目

java - Fuse OSGI + Spring JDBC 问题