状態を共有する2つ以上のを作成したいJButton
。つまり、マウスボタンをどちらかの上に押すとJButton
、両方が押された状態(「武装」)としてレンダリングされるか、チェックボックスの場合は両方が同時にオン/オフになります。
ユーザーには、両方のボタンが同じボタンであるかのように表示され、階層内の複数の場所に表示される必要があります(実際には、Swingではこれは許可されていません)。
ButtonModel
1つを作成し、両方のボタンに同じモデルを割り当てることで、途中まで到達できます。これにより、武装/チェック/選択された状態などが同期されます。
ただし、この方法でボタン間で共有されない顕著な効果の1つはフォーカスです。一方のボタンをクリックすると、そのボタンにフォーカスが与えられ(ボタン内の長方形で示されます)、もう一方のボタンから削除されます。どちらかのボタンが実際にフォーカスを持っているときはいつでも、両方のボタンがフォーカスされているかのようにレンダリングしたいと思います。
これを行うためのクリーンな方法はありますか?
理想的には、選択したルックアンドフィールから独立していることを望みます。
編集:共有に関する別の問題を発見しましたButtonModel
。ボタンの1つがフォーカスを失うと、モデルのプロパティarmed
とプロパティがに設定されます。これは処理後に発生するため、最初のボタンにフォーカスがあるときに2番目のボタンを押すと、もう一度押すまで押された状態にはなりません。pressed
false
mousePressed