在课堂之间进行交流
我有一个分为两个类的表单。 每个类代表表单部分的小部件。 允许这些类在彼此之间共享数据并相互更新的最佳方法是什么。
示例:单击A类中的按钮。 更新C类中的文本字段
你可以做的很短:
public class ButtonFrame extends JFrame implements ActionListener { private TextFieldFrame frame; public ButtonFrame(TextFieldFrame frame) { this.frame = frame; // init your components and add this as actionlistener to the button .... } public void actionPerformed(ActionEvent evt) { frame.notifyButtonPressed(); } }
另一课:
public class TextFieldFrame extends JFrame { private JTextField field = ...; // init in your constructor public void notifyButtonPressed() { field.setText("Yes man!! The button is pressed by the user!"); } }
同样,这是你必须要做的很短的事情。
您也可以使用Singleton
模式,但这是一种更好的方法。
您可以创建一个包含所有表单对象的类。 表单类都知道父类并通过它进行通信。
如果在类A中单击了一个按钮,则类A调用父类中的方法,而父类通知类C更新其文本字段。
不要认为小部件。 在模型上设计应用程序。 将小部件作为窗口放到这些模型上。 (并且不要不必要地扩展类。)
看看Mediator模式 ,它可以给你一些想法。
此外,JFace数据绑定框架的目标是在对象之间同步值,尽管我发现它的文档记录很差并且使用起来并不是很有趣。 JFace_Data_Binding
- java.sql.sqlnontransientconnectionexception:java.net.connectException:在端口上连接到服务器localhost时出错
- Java ServerSocketChannel SocketChannel(回调)
- 如何将字节数组存储为磁盘上的映像文件?
- 更高级的表/电子表格SWT实现
- 如何使用json节点解析json数组值
- 我想在鼠标hover在JMenuItem上时执行一些操作。 我应该使用什么样的听众?
- 读取NIO SocketChannel的超时时间?
- 如何在多模块项目中配置Maven shade插件?
- 如何检查哪些JTextField为空并告知用户有关它们的信息?