簡體   English   中英

Java:調用靜態方法,但是什么也沒發生?

[英]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.

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