1

Java で GUI を使用してテキストベースのゲームを作成しようとしていますが、SwingWorker を使用する必要があります。しかし、私はどのチュートリアルも理解できず、意味がありません:(。

public void write(String msg){
    int i=0;
    while(true){
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        console.setText(console.getText()+ msg.charAt(i));
        if(i==msg.length()){
            console.setText(console.getText()+ newline);
            break;
        }
    }
}

基本的に、私がやろうとしているのは、文字列をメソッドに渡し、文字ごとに出力することですが、sleep() が EDT を中断し、GUI を msg.length()*400ms でロックするため、できません :(.

誰かが SwingWorker を使用したコード ソリューションを持っている場合、私は感謝します :)

4

1 に答える 1

1

これを試して、swingworker を文字列で使用する方法を理解することができます。

public void runInBackgroud(final String msg)
{
    SwingWorker<Object, Object> task = new SwingWorker<Object, Object> ( )
    {
        public Object doInBackground()
        {
            write(msg);
            return null;
        }
        public void done()
        {}
    };
    task.execute ( );
}

このメソッドを呼び出すだけですrunInBackgroud(msg);

于 2012-12-24T11:03:44.383 に答える