我有一个分为两个类的表单。每个类代表表单部分的小部件。允许这些类在彼此之间共享数据并相互更新的最佳方法是什么。
实施例: 单击A类中的按钮。更新C类中的文本字段
答案 0 :(得分:3)
你可以做的很短:
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
模式,但这是一种更好的方式。
答案 1 :(得分:0)
您可以创建一个包含所有表单对象的类。表单类都知道父类并通过它进行通信。
如果在A类中单击了一个按钮,则A类调用父类中的方法,而父类通知C类更新其文本字段。
答案 2 :(得分:0)
不要想小部件。在模型上设计应用程序。将小部件作为窗口放到这些模型上。 (并且不要不必要地扩展类。)
答案 3 :(得分:0)
看看Mediator pattern,它可以给你一些想法。
此外,JFace数据绑定框架的目标是在对象之间同步值,尽管我发现它记录不清,使用起来也不是很有趣。 JFace_Data_Binding