从另一个类中的JPanel文本字段中获取值



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

如何访问它?

只需将TextField设置为公共静态数据。然后您就可以使用ClassName.TextFiledName 访问TextField

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

这个解决方案会起作用,但有一种更好的方法可以使代码更可重用。查看观察者模式并在代码中使用它。

既然没有SSCCE,这将是一个通用的答案
首先,您可以将文本框设为公共静态字段,并从另一个类访问它,但这将是您编写过的最糟糕的代码之一。其次,您可以使用setters/getters方法,这些方法很酷,但在程序变得复杂时表现不佳。setter/getter将在组件之间创建紧密耦合。最后,我建议使用Observer模式。这看起来像是用核武器对付自行车,但最终还是值得最初的麻烦——在这个过程中你会学到一些东西
更多信息和示例源代码可以在源代码制作中找到。

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

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

Swing教程

最新更新