5

Java Swing アプリケーションで、ペイント プログラムの典型的なツール パレットにあるような一連のボタンを作成したいと考えています。つまり、小さな正方形のボタンのセットで、それぞれにアイコンが含まれており、そのうちの 1 つだけが押され、別のボタンを押すと、最初のボタンが選択解除されます。私は多くの解決策を考えましたが、どれも非常に簡単/エレガントに思えません。

これは JRadioButton の仕事のように思えますが、これに Icon を追加しても小さな円が得られますが、これはかなりスペース効率が悪いです。別のルック アンド フィールを見つけるか、JRadioButton のコードをペイントするという選択肢があると思います。

別の方法として、JButton を ButtonGroup に追加し、JToggleButton.ToggleButtonModel をモデルとして設定することもできますが、標準の JButton のペイント コードでは、選択時にボタンが押されたままにならないため、目的の効果が得られません。おそらく、これを行うために JButton コードを変更できます。「押された」と同じように「選択された」絵を描くようなものです。

3 番目の代替手段は、通常の JButton を使用し、それらを押したままにするかどうかを保持し、ボタン間の変更を伝達する共通のマウス リスナーを追加することです。

目的を達成するための最良の方法について誰かアドバイスできますか? 私が見逃した単純な方法が最善ですが、これらの 3 つの代替方法のどれが最適かについてのアドバイスと、開始方法の指針も役立ちます。

4

2 に答える 2

9

の平野JToggleButtonButtonGroupどうですか?抽象的ではなく、 でインスタンス化でき、Icon選択されている間は押し下げられたままになります。

于 2011-06-01T17:13:58.497 に答える
1

SwingSet2 のデモを参照してください: http://java.sun.com/products/plugin/1.4/demos/jfc/SwingSet2/SwingSet2.html

ツールバーの 2 番目のアイコン (チェック ボックスとラジオ ボタンのあるアイコン) をクリックし、[ラジオ ボタン] タブをクリックします。次に、右側のパネルの [表示オプション] の下にある [境界線のペイント] をクリックします。

デモのソース コードは JDK インストール ディレクトリの下にあるため、たとえば、私の PC では \jdk1.6.0_01\demo\jfc\SwingSet2\src の下にあります。

于 2011-06-01T17:28:49.513 に答える