簡體   English   中英

如何從多個類更新GUI?

[英]How can I update a GUI from multiple classes?

假設我有一個構建GUI的類,並具有將文本追加到JTextArea的方法updateMainUI(String text) 當前,我正在使用抽象類和方法來從其他類更新字段,但是我想知道這是否是“正確”的方法?

我現在有三個抽象類,這些抽象類具有protected abstract updateUI(String text)方法,我需要在我的GUI類中重寫該方法,以便在需要時更新字段,但是我在多個類中都做同樣的事情,現在我感覺就像需要另一個類做完全相同的事情。

是否有更好或更可接受的方法?

從您的問題出發,很難100%地確定,但是通常建議使用模型-視圖-控制器方法來解決這些類型的問題。

也就是說,模型定義了“虛擬”狀態,視圖向用戶表示此狀態,控制器控制從視圖啟動的對模型的更改...

模型在更改時會通知視圖,因此它可以更新狀態,並且當視圖/狀態的某些部分發生更改並且可以反映在模型中時,視圖會通知控制器。

為此,我鼓勵您定義某種模型,該模型通常由一個interface描述,該interface可被程序的各個方面使用。 對模型的更新不需要來自用戶/ UI,但是您需要確保清楚地記錄何時通知可能來自事件調度線程以外的其他線程,以便您的UI代碼可以采取正確的措施並同步更新。

因此,根據您的示例,您的模型可能具有方法調用setText (或類似的方法),該方法會觸發某種事件通知已注冊的偵聽器。

該模型實例將在您的應用程序的各個類之間共享

您的主要UI將是這些類之一,用於監聽模型狀態的更改,當檢測到更改時,它將相應地更新其狀態。

這是觀察者模式的示例,您會在整個Swing中看到它的使用(通過它的listener / event API)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM