假設我有一個gui,並且gui由兩部分組成,其中每個部分都有它自己的類。
所以一個類包含一個JLabel。
第二類包含一個帶有提交按鈕的文本字段。
我該如何着手讓這兩個組件相互交談?Java make組件互相交談
這當然是一個簡單的例子,但如果我有兩個類用於提交數據,另一個用於顯示提交的數據,那麼如何使這兩個組件進行通信?
假設我有一個gui,並且gui由兩部分組成,其中每個部分都有它自己的類。
所以一個類包含一個JLabel。
第二類包含一個帶有提交按鈕的文本字段。
我該如何着手讓這兩個組件相互交談?Java make組件互相交談
這當然是一個簡單的例子,但如果我有兩個類用於提交數據,另一個用於顯示提交的數據,那麼如何使這兩個組件進行通信?
的幾點思考:
,有可能是一個控制器類,得到通過構造函數對UI對象(嵌套的JTextField
s和JLabel
s等)的所有必要參考。 在構建時,該控制器可以將自己附加到這些嵌套組件。 控制器應該最好包含嵌套的,內部的或可能是匿名的類來實現監聽器接口,而不是將監聽器接口添加到控制器本身。首先,要封裝這些偵聽器,其次,爲了避免事件源的區分,如果需要爲多個組件(源)實現相同的接口。這些偵聽器實現(也許非常通用的PropertyChangeListener
)可以作爲對象(如上所述)或者使用mediator對象來更新其他組件。
如果你有一個提交按鈕,你可以添加一個動作監聽器。單擊時,您可以調用另一個類中的方法來接收字符串,然後將其顯示在JLabel上。然而,針對不同組件的多個類通常不是一個好主意,並且像Sam說的那樣擁有一個MVC好得多。
類具有的JTextArea
//Have this object created
JLabelClass JLC = new JLabelClass();
//When submit button is clicked run this
JLC.displayText(JTextArea.getText());
課內與JLabel的
//add this method
public void displayText(String text){
JLabel.setText(text);
//Refresh Gui and display stuff....
}
希望這有助於...很抱歉的格式我還是新來的StackOverflow
非常感謝,對不起,我不得不接受Sam的回答,因爲他說剛纔輸入的內容完全一樣,但他是第一個。 – Quillion
可以使用'調解員「,如果這兩個班級是同事和/或觀察員模式 – nachokk
這個問題太寬泛。有很多方法可以進行交流,並且有很多關於良好模式的文檔。請讓你的問題更具體。 – jzd
@jzd我不知道如何讓兩個類互相交流。任何方法只要有效就足夠了,我現在正在尋找Mediator,看起來不錯,但我從來不知道這種方法。 – Quillion