20

さまざまな理由でボタンのように動作したいが、JLabel のように見える JButton があります。実際にはフードの下にある JLabel である必要はありません。盛り上がったボタンの端が表示されないようにするだけです。

JButton の「ボタンの外観」をオフにして、すべてのボタン機能を維持する簡単な方法はありますか?

表示目的で jlabel に委譲されたある種の構成されたサブクラス ハイパーボタンを構築できましたが、button.lookLikeAButton(false).

4

5 に答える 5

31

次のことを行う必要があります。

        setFocusPainted(false);
        setMargin(new Insets(0, 0, 0, 0));
        setContentAreaFilled(false);
        setBorderPainted(false);
        setOpaque(false);

実際にフォーカスを描画したい場合は、除外するsetFocusPainted(false)ことをお勧めします (例: Windows のルック アンド フィールの点線の境界線)。

「アイコンのみ」のボタンが必要な場合に、上記のコードを使用しました。

于 2010-06-11T20:38:09.323 に答える
2

背景色を透明に設定し、境界線を EmptyBorder インスタンスに設定します。

例えば

   JButton button = new JButton();
   button.setBackground(null);
   button.setOpaque(false);
   button.setBorder(new EmptyBorder());

ボタンをクリックすると、テキストは上下に移動し、クリックしたままにしてボタンを「武装」し、マウスをボタン領域の外に移動して「武装解除」することができます。

この動作が望ましくない場合は、ボタンを使用せず、代わりに実際のラベルを使用することをお勧めします。

于 2010-06-11T18:53:25.570 に答える
1
button.setBorderPainted( false );
button.setContentAreaFilled( false ); // ?
于 2010-06-11T19:28:25.000 に答える
0
 setContentAreaFilled(false);
 setBorderPainted(false);
 setOpaque(false);

この 3 行でうまくいきます。

于 2013-06-25T13:37:51.937 に答える
-1

マウスリスナーを JLabel に追加するだけで、実際にはもっと簡単になるのでしょうか? mousePressed と mouseReleased の色を調整し、mouseClicked でアクション処理を行うことができますか?

于 2010-06-11T18:54:28.583 に答える