Java 按钮按下视觉样式

Java Button pressing visual style

JButton button = new JButton("Green Button");
button.setBackground(Color.green);
button.setBorderPainted(false);
button.setFocusPainted(false);

使用上面的代码,Java 移除按钮的悬停样式。

按下按钮会使按钮的背景变为蓝色。

但是 Java 如何让按钮的背景在按下时不变(在本例中保持绿色)?

根据您的操作,让 JPanel 像按钮一样工作可能会更好。

另一种似乎可行的方法是 button.setEnabled(false); 尽管它会使文本变淡。

我能想到的最好的方法(我不确定这是最好的)是:

btnConvert.setContentAreaFilled(false);
        btnConvert.setBackground(null);
        btnConvert.setBorderPainted(false);
        btnConvert.setFocusPainted(false);
        btnConvert.setOpaque(true);

这将使除文本之外的所有内容都透明。然后,您可以在按钮后面放置一个带有绿色背景的 JPanel。

以下代码有效,并且在您悬停或单击时不会更改:

JPanel panel = new JPanel();
panel.setBackground(Color.green);
JButton button = new JButton("Button");
button.setContentAreaFilled(false);
button.setBackground(null);
button.setBorderPainted(false);
button.setFocusPainted(false);
button.setOpaque(true);
panel.setLayout(new BorderLayout(0, 0));
panel.add(button);
getContentPane().add(panel);

这是您悬停或单击时的样子:

您可以使用像...这样简单的东西

JButton btn = new JButton("Hello");
btn.setBackground(Color.GREEN);
btn.setBorderPainted(false);
btn.setFocusPainted(false);
btn.setContentAreaFilled(false);
btn.setOpaque(true);
btn.setMargin(new Insets(10, 10, 10, 10));

它绘制了一个漂亮的绿色按钮...

这没有 "pressed" 状态渲染