0

JFrame にテキスト ファイルとボタンを追加するには、Java コードを開発する必要があります。スレッドを使用して、JFrame のタイトル バーで 1 分ごとに時間を更新する必要があります。私は両方の操作を実行するためのコードを持っています (毎分の時間を更新し、テキスト ボックスの値を取得します) が、同じクラスに 2 つのスレッドを追加する方法がわかりません。

4

1 に答える 1

1

あなたが求めていることは、 で行うには危険なことですSwingSwingコンポーネントは(または Swing スレッドとも呼ばれます)thread-safeから更新する必要はなく、更新する必要があります。これを行うために、. アイデアは、Swing 処理 (のタイトルを時間で更新するなど) を行うコードをセパレート内に配置し、それを に渡すことです。Event Dispatching ThreadEDTSwingSwingUtilities.invokeLater(Runnable)EDTJFrameRunnableinvokeLater()

これを行うには、匿名の Runnable クラスを作成できます。

Runnable updateJFrame = new Runnable () {
    public void run () {
        myJFrame.setTitle("My New Title");
    }
};

SwingUtilities.invokeLater(updateJFrame);

を使用invokeLater()すると、更新後にコンポーネントが適切に更新/再描画されるようになります。(静的を使用しているときに見られる動作は、実際には更新/再描画の問題である可能性があります。) この話の教訓は、非 EDT スレッドで Swing コンポーネントを操作すると、すべての賭けがオフになるということです。

于 2013-01-18T07:47:47.240 に答える