web-dev-qa-db-ja.com

シンプルなフラットスタイルでJButtonを作る方法は?

jButtonに背景色のみを表示させる最も簡単な方法は何ですか?境界線、3Dルック、ホバーハイライトなどの他の効果は必要ありません。

前もって感謝します。

12
c0d3x

ポイントを逃したかどうかはわかりません...しかし、私は通常、次のようなことをします。

button.setBorderPainted(false);
button.setFocusPainted(false);
button.setContentAreaFilled(false);
25

色と境界線を設定するだけです。

_private static JButton createSimpleButton(String text) {
  JButton button = new JButton(text);
  button.setForeground(Color.BLACK);
  button.setBackground(Color.WHITE);
  Border line = new LineBorder(Color.BLACK);
  Border margin = new EmptyBorder(5, 15, 5, 15);
  Border compound = new CompoundBorder(line, margin);
  button.setBorder(compound);
  return button;
}
_

setOpaque(false); を使用して、背景を透明にします。

13
McDowell

どうですか

yourButton.setBorder(null);

2
Joonas Pulakka

代わりに、MouseListenerでJLabelを使用することをお勧めします...何らかの方法でJButtonまたはActionListenerを使用することに縛られていない限り。

1
Nate

まず、ルックアンドフィールを「メタル」などのクールなものに設定します。

try
{
    for (UIManager.LookAndFeelInfo lnf : 
        UIManager.getInstalledLookAndFeels()) {
        if ("Metal".equals(lnf.getName())) {
            UIManager.setLookAndFeel(lnf.getClassName());
            break;
        }
    }
} catch (Exception e) { /* Lazy handling this >.> */ }

次に、次のようなことを行います。

my_jbutton.setBackground(new Color(240,240,241);

ボタンの色がスイングコントロールの色(240、240、240)と正確に等しい場合、ウィンドウはウィンドウのようなボタンスタイルをボタンに適用します。それ以外の場合、ボタンは単純なフラットスタイルを想定します。

0
Felype