所以我正在编写一个程序,我最终希望 JButton 在按下时改变颜色。到目前为止,这是我的困境:
-尽管切换了 setOpaque() 和 setContentAreaFilled() 的 true/false,但我无法获取当前设置为显示背景颜色的 JButton。我希望能够在尝试添加 ActionListener 之前执行此操作。
-我想使用类似于 JToggleButton() 的东西来更改颜色,但是我想只使用背景而不是图标来执行此操作。
我使用的是 mac,我想知道它是否与默认按钮设置有关,但我不知道如何更改/覆盖这些设置。
我会张贴截图,但不幸的是我的声誉还不够高。
这是我得到的示例:
import java.awt.*;
import javax.swing.*;
public class Example extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame main = new JFrame("Example");
JPanel content = new JPanel();
JButton button = new JButton("Press");
button.setBackground(Color.orange);
button.setContentAreaFilled(false);
button.setOpaque(true);
content.add(button);
main.setContentPane(content);
main.setVisible(true);
main.setSize(40,60);
main.setLocation(500, 200);
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
对于那些看不到我在说什么的人(可能在 windows 或 linux 平台上),按钮出现了,按钮后面的布局(不是边框或 JPanel,只是按钮周围的一个小矩形) 根据指定的颜色着色。
提前感谢您的宝贵时间。
此外,我知道在 ActionListener 内部,getSource() 方法将返回与按钮关联的文本。有没有什么方法可以使用类似的东西从 ActionListener 内部更改按钮的颜色,或者这个想法只是对可以以更简单的方式完成的事情的冗余。
非常感谢。
最佳答案
我想你想尝试一下外观和感觉。 尝试
button.setUI(new MetalButtonUI());
或为按钮尝试一些其他支持背景颜色的 UI。
关于java - JButton 不会显示背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781275/