Java 如何从多个类更新GUI?

Java 如何从多个类更新GUI?,java,swing,user-interface,interface,abstract-class,Java,Swing,User Interface,Interface,Abstract Class,假设我有一个类,它构建了一个GUI,并有一个方法updateMainUI(String text),该方法将文本附加到JTextArea。目前,我正在使用抽象类和方法从另一个类更新字段,但我想知道这是否是“正确”的方法 我现在有三个抽象类,它们有一个受保护的抽象updateUI(String text)方法,我在GUI类中重写该方法,以便在需要时更新字段,但我在多个类中执行相同的操作,现在我觉得我需要另一个执行完全相同操作的类 有更好或更容易接受的方法吗?从您的问题来看,很难100%确定,但是,

假设我有一个类,它构建了一个GUI,并有一个方法
updateMainUI(String text)
,该方法将文本附加到
JTextArea
。目前,我正在使用抽象类和方法从另一个类更新字段,但我想知道这是否是“正确”的方法

我现在有三个抽象类,它们有一个
受保护的抽象updateUI(String text)
方法,我在GUI类中重写该方法,以便在需要时更新字段,但我在多个类中执行相同的操作,现在我觉得我需要另一个执行完全相同操作的类


有更好或更容易接受的方法吗?

从您的问题来看,很难100%确定,但是,通常鼓励使用一种方法来解决这些类型的问题

也就是说,模型定义“虚拟”状态,视图向用户表示该状态,控制器控制从视图启动的对模型的更改

当视图发生更改时,模型会通知视图,以便它可以更新状态,当视图/状态的某些部分发生更改并可能反映在模型中时,视图会通知控制器

为此,我鼓励您定义某种类型的模型,它通常由
接口描述,可供程序的各个方面使用。模型的更新不需要来自用户/UI,但您需要确保清楚地记录通知何时可能来自事件调度线程以外的其他线程,以便UI代码可以采取正确的操作并同步更新

因此,根据您的示例,您的模型可能有一个方法调用
setText
(或类似的调用),它会向注册的侦听器触发某种类型的事件通知

此模型实例将在应用程序的各个类之间共享

主UI将是这些类中的一个,侦听模型状态的更改,当它检测到更改时,它将相应地更新其状态

这是一个示例,您可以在Swing中看到这一点(通过它的侦听器/事件API)