1

Java アプリケーションのバージョン 3 を開始することにしました。アプリケーションを適切な方法で開始しているかどうかを知りたいと思いました。以前も質問したことがありますが、さまざまな回答がありました。

netbeans Java アプリケーションを開始し、すべてのコンポーネントを JFrame に描画しました。私のバージョン2では、プログラムをそのまま開始していました

コード: (これもこれまでのバージョン 3 です)

public class theApp {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
{
    final CLSuiteMain theMainFrame = new CLSuiteMain();

    EventQueue.invokeLater
    (
        new Runnable() 
        {
                @Override
            public void run() 
            {
                try {
                        try 
                        {
                            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                        } catch (UnsupportedLookAndFeelException ex) 
                        {
                            Logger.getLogger(theApp.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } 
                catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {}  

                theMainFrame.setVisible(true);
            }

        }
    );
}
}

これを Windows アプリケーションとして作成しています。ロボット クラスを介してユーザー アクションをシミュレートするスレッドを (安全に) その中で開始できるようにしたいと考えています。ユーザーが CLSuiteMain オブジェクトのトグル ボタンを押して、このスレッドを開始および一時停止できるようにしたいと考えています。また、メインの JFrame が安全に終了すると、スレッドも終了します。

まず、私がやりたいことのために、このスレッドを安全に開始できましたか? 説明どおりに実行できるアプリケーション内の別のスレッドを適切かつ安全に実装するにはどうすればよいですか?

  • つまり、アプリを起動し、トグル ボタンをクリックすると、スレッドがループで開始され、ユーザーがトグルを再度押すまで同じ手順を実行し続けます。その時点で、ループの実行が停止し、別の処理が続行されます。トグルボタンのクリック。(ボーナス、スレッドの実行をループの先頭にリセットするにはどうすればよいですか?)

私は完全なコードなどを探しているわけではありません。他の助けがなければ、可能であれば疑似コードの簡単な例を探しています。

4

1 に答える 1

1

つまり、アプリを起動し、トグル ボタンをクリックすると、スレッドがループで開始され、ユーザーがトグルを再度押すまで同じ手順を実行し続けます。その時点で、ループの実行が停止し、別の処理が続行されます。トグルボタンのクリック。(ボーナス、スレッドの実行をループの先頭にリセットするにはどうすればよいですか?)

Ok。

すべての GUI コンポーネントを作成します。JFrame には、これらのメソッドを設定する必要があります。

    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent event) {
            exitProcedure();
        }
    });

退会手続き方法はこんな感じ。

public void exitProcedure() {
    thread.stopProcessing();
    frame.dispose();
    System.exit(0);
}

トグル ボタンを保持する JPanel 内の任意の場所に新しいスレッドを作成できます。スレッド インスタンスは、GUI データ モデルの一部である必要があります。GUI データ モデルのインスタンスをすべてのビュー コンポーネントに渡します。

トグル ボタンのアクション リスナーでスレッドを開始し、そこでスレッドを一時停止します。

おまけの質問として、スレッドを再起動し、アクション リスナーでトグル ボタンをスレッド実行状態に設定する別の通常の JButton が必要です。

再起動、一時停止、および停止できるように、スレッド クラスをコーディングする必要があります。

于 2013-03-28T13:34:54.577 に答える