0

カスタムのルック アンド フィールのボタンを作成したいと考えています。通常、マウスオーバー、マウスクリック、ボタン無効などのボタンの背景として設定するさまざまな画像があります。 javax.swing.JButton を拡張し、paintComponent メソッドをオーバーライドする独自のクラスを作成しました。上記のすべての状態のボタンの背景を変更するにはどうすればよいですか。

4

4 に答える 4

4

Steve De Caux の回答に加えて、次のことができます。

  1. 変数MouseListenerを変更するa を追加して、拡張機能で呼び出しましょうenumstateJButton
  2. あなたのオーバーライドpaintComponentでは、現在を考慮して、state異なる背景をペイントしてください。お気に入り

    if (!getModel().isEnabled()) {
    } else if (state == ButtonState.MOUSE_OVER) {
    } else if (state == ButtonState.MOUSE_CLICKED) {   
    }
    
于 2009-12-12T08:21:44.473 に答える
3

JButton には、ロールオーバー、押された状態、選択された状態、無効化された状態、および選択された状態を無効化するための一連の単純な set メソッドがあります。

button.setPressedIcon(new ImageIcon("images/button-down.png")

他の方法は次のとおりです。

button.setRolloverIcon()
button.setSelectedIcon()
button.setRolloverSelectedIcon()
button.setDisabledIcon()
button.setDisabledSelectedIcon()

...楽しんで !

ところで、O'Reilly には Swing Hacks という楽しい本があり、swing で遊ぶための小さなグッズがたくさんあります: Swing Hacks

于 2009-12-12T08:20:20.993 に答える
2

カスタム ボタン UI デリゲートを作成できます。このブログエントリ:http://blog.elevenworks.com/?p=4にカスタム タブ ペインの例がありますが、原則は同じです。BasicButtonUI を拡張し、ボタンに必要なカスタム レンダリングを実装してから、ボタンで setUI() を呼び出します。

これは、既存のボタン API メソッドを使用して外観を変更するよりも実装に時間がかかる可能性がありますが、より多くの制御が可能になります。

于 2009-12-12T08:29:26.250 に答える
0
ImageIcon icon = new ImageIcon("images/icon.gif");
JButton button = new JButton(icon);
于 2009-12-12T07:44:31.273 に答える