如何在Mac OS上更改按钮的颜色?

时间:2013-09-23 15:21:34

标签: java jframe

我在更改按钮背景的颜色时遇到问题,我刚开始学习如何操作GUI,并且我有以下代码在Windows上完美运行,但我使用的是Mac OS。

你能帮我解决这个问题吗?

我已经添加了按钮,然后更改了颜色,但在运行时,它会弹出9个按钮的窗口,但是所有这些按钮都是白色的,背景是红色的,如你所见,我将它们设置为颜色为蓝色。

        b1.setBackground(Color.BLUE);
        b2.setBackground(Color.BLUE);
        b3.setBackground(Color.BLUE);
        b4.setBackground(Color.BLUE);
        b5.setBackground(Color.BLUE);
        b6.setBackground(Color.BLUE);
        b7.setBackground(Color.BLUE);
        b8.setBackground(Color.BLUE);
        b9.setBackground(Color.BLUE);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.getContentPane().setBackground(Color.RED);
        this.setBackground(Color.BLACK);
        this.setVisible(true);
        this.setBounds(100, 100, 800, 500);

1 个答案:

答案 0 :(得分:1)

在OSX和Windows上绘制按钮的默认方式似乎有所不同。

由于您的问题很广泛,我不太确定预期的行为是什么,所以这里有一些解决方案:

我刚在Mac上测试过,你需要做的是指定按钮应该是不透明的:

b1.setOpaque(true);

根据您要完成的操作,可能需要您指定不应绘制边框:

b1.setBorderPainted(false);

如果你没有指定不应该绘制边框,你将会得到一个蓝色背景的正方形和一个中间默认颜色的按钮。

如果你想在两个操作系统上看起来相同的东西,你应该在你的JFrame中使用以下行:

try {
        UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
} 
catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

最后一种方法会让你失去OSX / Windows的外观和感觉,但按钮可能看起来更像你期望的那样。