0

プログラム用のカスタムコンソールを作成しました。toConsoleというメッセージをコンソールに追加するメソッドがあります。これは、文字列をチェックして文字列に時間を追加する文字列を要求します。次に、関数addConsoleに移動し、既存のテキストが存在するかどうかを確認します。存在する場合は、既存のテキストを新しいテキストに追加します。存在しない場合は、新しいテキストを挿入します。これがエラーです。また、コンソールの入力テキストボックスに手動でテキストを入力しても、このエラーは発生しないことを指摘することもできます。

Exception in thread "main" java.lang.NullPointerException
    at com.michael.tech.api.console.RunConsole.addConsole(RunConsole.java:188)
    at com.michael.tech.api.console.RunConsole.toConsole(RunConsole.java:204)
    at com.michael.tech.api.console.RunConsole.toConsole(RunConsole.java:223)
    at com.michael.tech.api.testerFile.main(testerFile.java:25)

これがaddConsoleメソッドです

private static void addConsole(String s){
    console.setText( ( console.getText().isEmpty()) ? s : (console.getText() + "\n" + s) );
}

toConsoleメソッド

public static void toConsole(String s, boolean timeStamp, boolean classPath, String className){
        if(s.startsWith("/")){
            doCommand(s);
            return;
        }
        Time t = new Time();
        t.getSYSPrint();
        String time = "[" + t.toMilitary() + "] ";
        if(EchoTime || timeStamp){
            addConsole(time + s);
        }
        else if(classPath){
            addConsole(className);
        }
        else{ 
            addConsole(s);
        }
    }

最後に、testerFileクラスのMainメソッド

public static void main(String[] args) {            
        RunConsole.startConsole();
        RunConsole.toConsole("test");
    }

助けてくれてありがとう。私が見落とした小さな間違いだと思います(私も願っています)。

編集:行番号を表示するには、ビンを貼り付けます

RunConsoleクラス http://pastebin.com/2yUAwQc5

testerFileクラス http://pastebin.com/R5ViLekp

4

1 に答える 1

2

問題は、インスタンス化されていないため、JTextArea consoleまだデフォルト値が残っていることです。nullこれは、createdのインスタンスがないためですRunConsole代わりに、次の方法でこのクラスのメソッドにアクセスしていますstatic

RunConsole.startConsole();
RunConsole.toConsole("test");

特にアプリケーションに状態staticが必要なため、メソッドの使用は設計が不十分です。インスタンスメソッドですべてのメソッドを作成し、上記の行を次のように置き換えます。staticRunConsole

RunConsole runConsole = new RunConsole();
runConsole.startConsole();
runConsole.toConsole("test");

また、これを行うときは、で作成されたインスタンスを削除することを忘れないでください。削除しないとstartConsole、からの最初のメッセージが表示されませんtoConsole。変化する:

new RunConsole().setVisible(true);

setVisible(true);
于 2013-01-31T01:09:49.690 に答える