[英]Java: Calling static method but nothing happens?
我有一個叫做GUI的類,它基本上使用Swing創建一個布局。 在該類中,我有一個稱為“ log”的方法,該方法應該在布局中的文本區域添加新行。
問題是,每當我從GUI類外部調用函數時,都不會發生任何事情。 如果我從類中調用該方法,則會按預期的那樣在textarea中添加一行。
我已經設置了方法及其調用到公共靜態的所有變量,並且我沒有得到任何錯誤。 當我從外部調用該方法時,它什么也沒做。
有任何想法嗎?
編輯:
這是GUI類中的方法:
public static void log(String inputString) {
logConsole.append(inputString + "\r\n");
}
在類的底部,swing聲明了textarea,而我只是將其修改為public static而不是private。
public static javax.swing.JTextArea logConsole;
無法發布更多代碼,希望這至少有幫助嗎? :/
Swing最有可能是並發問題。 由於Swing是單線程的,因此需要在事件調度線程(即EDT)中修改Swing組件。 有關更多信息,請參見Swing中的並發 。
編輯-
如果確實存在並發問題,那么一種快速的解決方法是使用SwingUtilities
。 特別是isEventDispatchThread()
和invokeLater(...)
。 例如,
if(!SwingUtilities.isEventDispatchThread()){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
GUI.log("foo"); // modify textarea in EDT
}
});
}
else{
// your problem lies elsewhere
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.