【问题标题】:Get value from JPanel textfield in another class从另一个类中的 JPanel 文本字段中获取值
【发布时间】:2012-09-10 08:11:02
【问题描述】:

我有带有文本框的JPanel,在另一个面板中保存按钮。如果我点击保存按钮 我必须获得第一个面板文本框的值。

如何访问它?

【问题讨论】:

  • 发布一些你尝试过的代码...它将帮助您获得答案...

标签: java swing


【解决方案1】:

只需将 TextField 设置为 Public Static 数据即可。然后你可以使用 ClassName.TextFiledName 访问 TextField

【讨论】:

  • 这会将 OOPs 婴儿与洗澡水一起扔掉。不,谢谢。对于未来的访问者来说,这是一个坏主意 (TM)。
【解决方案2】:

一个简单的解决方案是在您实现 ActionListener 的类中创建一个构造函数,并在构造函数中传递您需要更新或检索值的组件。

此解决方案可行,但有一种更好的方法可以使代码更易于重用。查看observer pattern 并在您的代码中使用它。

【讨论】:

  • 我在单独的类中编写动作监听器,我需要像这个 public static final JTextField maxPerPick 一样声明文本字段,然后只有我可以在另一个类中访问,如 String value1=PortFolioPanel.maxPerPick.getText() ;.我没有使用对话框,只是在一个面板中保存一个屏幕,在另一个面板中使用文本字段
【解决方案3】:

好吧,既然没有 SSCCE,这将是一个普遍的答案。
首先,您可以将文本框设为公共静态字段并从其他类访问它,但这将是您编写的最糟糕的代码之一。其次,您可以使用很酷但随着程序变得复杂而表现不佳的 setter/getter 方法。 Setter/getter 将在组件之间创建紧密耦合。最后我建议使用观察者模式。这看起来像是对自行车使用核武器,但最终还是值得一开始的麻烦 - 而且您在此过程中学到了一些东西。
更多信息和示例源代码可以在Source making找到。

【讨论】:

    【解决方案4】:

    您应该有一个 Controller 类,您可以在其中创建面板。保持对控制器类中面板的引用。在 CustomPanel1 中公开一个 getter 方法以返回 TextField 中的文本(而不是文本字段本身)。同样,您也可以从 Controller 创建第二个 CustomPanel2 并保留参考。在您的控制器中定义监听器类并将其传递给您的第二个面板。在第二个面板中,将侦听器添加到您的按钮。

    这将是一个简单的解决方案。

    Swing Tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2017-07-05
      • 2018-01-01
      • 2013-06-05
      相关资源
      最近更新 更多