問題:
ユーザーが自分のコンテンツ内で問題を説明しています。ウィンドウのサイズを変更すると、JButton の動作が予期せず変化する Java Swing アプリケーション。具体的には、START/STOP ボタンをクリックするとテキストが START に戻り、BALL COLOR ボタンの色とテキストが期待どおりに更新されません。
解決策:
提供されるソリューションは、観察された動作に寄与する可能性のあるいくつかの潜在的な問題に対処します:
元のコードは、ボタンの背景色を設定した後に、不必要に revalidate() と repaint() を呼び出しています。これらのメソッドは、コンポーネントのレイアウトまたは外観を動的に調整する必要がある場合にのみ必要です。
Color.white をより明るくしたり、Color.black をより暗くしたりすることはできません。さらに、この例では Color.darkGray.darker() を使用しており、その結果 Color.black が生成されます。明るい色と暗い色の両方がある色の場合は、Color.brighter() または Color.darker() を適切に使用します。
色の静的配列を使用する代わりに、キューを使用してカラー管理を簡素化し、カラーの循環を可能にします。
DrawingArea コンポーネントは、背景色または前景色が更新されるときに repaint() を適切に呼び出します。
START/STOP ボタンのテキストは、タイマーの実行状態に基づいて正しく変更されます。 「BALL COLOR」ボタンは、現在選択されている色と一致するように背景色を更新します。
ここでは、元のコードと改訂されたコードの比較を示します。コード:
オリジナル:
startStopButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 4, true)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 2, true)); buttonPanel.add(colourButton);
改訂:
startStopButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(colourButton);
これらの問題に対処することで、提供されるソリューションはアプリケーションの動作を安定させ、ウィンドウのサイズを変更するときの予期しない動作を排除することを目的としています。
以上がJava Swing ウィンドウのサイズを変更すると、JButton の動作が予期せず変化するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。