Java 从另一个类中的JPanel textfield获取值

Java 从另一个类中的JPanel textfield获取值,java,swing,Java,Swing,我有JPanel和另一个面板中的文本框、保存按钮。如果我点击保存按钮 我必须得到第一个面板文本框的值 如何访问它?既然没有SSCCE,这将是一个一般性的答案。 首先,您可以将文本框设置为公共静态字段,并从另一个类访问它,但这将是您编写的最糟糕的代码之一。其次,您可以使用setter/getter方法,这些方法很酷,但在程序变得复杂时表现不佳。setter/getter将在组件之间创建紧密耦合。最后,我建议使用观察者模式。这看起来像是对自行车使用核武器,但最终还是值得一试的——在这个过程中你学到了

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


如何访问它?

既然没有SSCCE,这将是一个一般性的答案。
首先,您可以将文本框设置为公共静态字段,并从另一个类访问它,但这将是您编写的最糟糕的代码之一。其次,您可以使用setter/getter方法,这些方法很酷,但在程序变得复杂时表现不佳。setter/getter将在组件之间创建紧密耦合。最后,我建议使用观察者模式。这看起来像是对自行车使用核武器,但最终还是值得一试的——在这个过程中你学到了一些东西。

有关更多信息和示例源代码,请访问。

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


这个解决方案会起作用,但是有一种更好的方法可以让代码更具可重用性。查看并在代码中使用它。

只需将文本字段设置为公共静态数据即可。然后你可以使用ClassName.TextFiledName访问TextField。你应该有一个
控制器
类,从中创建面板。在控制器类中保留对面板的引用。在
CustomPanel1
中公开一个getter方法,以返回TextField中的文本(而不是TextField本身)。同样,您也可以从
控制器创建第二个
CustomPanel2
,并保留引用。在控制器中定义侦听器类并将其传递给第二个面板。在第二个面板中,将侦听器添加到按钮

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


发布一些您尝试过的代码。。。它将帮助您获得答案…我在单独的类中编写操作侦听器,我需要声明如下公共静态最终JTextField maxPerPick这样的textfield,然后只有我可以在另一个类中访问,如字符串value1=PortFolioPanel.maxPerPick.getText();。我没有使用对话框,只是在一个面板中保存一个屏幕,在另一个面板中保存文本字段。这会将OOPs婴儿和洗澡水一起扔掉。不用了,谢谢。对未来的游客来说,这是个坏主意(TM)。