【发布时间】:2012-09-10 08:11:02
【问题描述】:
我有带有文本框的JPanel,在另一个面板中保存按钮。如果我点击保存按钮
我必须获得第一个面板文本框的值。
如何访问它?
【问题讨论】:
-
发布一些你尝试过的代码...它将帮助您获得答案...
我有带有文本框的JPanel,在另一个面板中保存按钮。如果我点击保存按钮
我必须获得第一个面板文本框的值。
如何访问它?
【问题讨论】:
只需将 TextField 设置为 Public Static 数据即可。然后你可以使用 ClassName.TextFiledName 访问 TextField
【讨论】:
一个简单的解决方案是在您实现 ActionListener 的类中创建一个构造函数,并在构造函数中传递您需要更新或检索值的组件。
此解决方案可行,但有一种更好的方法可以使代码更易于重用。查看observer pattern 并在您的代码中使用它。
【讨论】:
好吧,既然没有 SSCCE,这将是一个普遍的答案。
首先,您可以将文本框设为公共静态字段并从其他类访问它,但这将是您编写的最糟糕的代码之一。其次,您可以使用很酷但随着程序变得复杂而表现不佳的 setter/getter 方法。 Setter/getter 将在组件之间创建紧密耦合。最后我建议使用观察者模式。这看起来像是对自行车使用核武器,但最终还是值得一开始的麻烦 - 而且您在此过程中学到了一些东西。
更多信息和示例源代码可以在Source making找到。
【讨论】:
您应该有一个 Controller 类,您可以在其中创建面板。保持对控制器类中面板的引用。在 CustomPanel1 中公开一个 getter 方法以返回 TextField 中的文本(而不是文本字段本身)。同样,您也可以从 Controller 创建第二个 CustomPanel2 并保留参考。在您的控制器中定义监听器类并将其传递给您的第二个面板。在第二个面板中,将侦听器添加到您的按钮。
这将是一个简单的解决方案。
【讨论】: