さまざまな理由でボタンのように動作したいが、JLabel のように見える JButton があります。実際にはフードの下にある JLabel である必要はありません。盛り上がったボタンの端が表示されないようにするだけです。
JButton の「ボタンの外観」をオフにして、すべてのボタン機能を維持する簡単な方法はありますか?
表示目的で jlabel に委譲されたある種の構成されたサブクラス ハイパーボタンを構築できましたが、button.lookLikeAButton(false)
.
次のことを行う必要があります。
setFocusPainted(false);
setMargin(new Insets(0, 0, 0, 0));
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
実際にフォーカスを描画したい場合は、除外するsetFocusPainted(false)
ことをお勧めします (例: Windows のルック アンド フィールの点線の境界線)。
「アイコンのみ」のボタンが必要な場合に、上記のコードを使用しました。
背景色を透明に設定し、境界線を EmptyBorder インスタンスに設定します。
例えば
JButton button = new JButton();
button.setBackground(null);
button.setOpaque(false);
button.setBorder(new EmptyBorder());
ボタンをクリックすると、テキストは上下に移動し、クリックしたままにしてボタンを「武装」し、マウスをボタン領域の外に移動して「武装解除」することができます。
この動作が望ましくない場合は、ボタンを使用せず、代わりに実際のラベルを使用することをお勧めします。
button.setBorderPainted( false );
button.setContentAreaFilled( false ); // ?
setContentAreaFilled(false);
setBorderPainted(false);
setOpaque(false);
この 3 行でうまくいきます。
マウスリスナーを JLabel に追加するだけで、実際にはもっと簡単になるのでしょうか? mousePressed と mouseReleased の色を調整し、mouseClicked でアクション処理を行うことができますか?