1

我在更改按钮背景颜色时遇到问题,我刚刚开始学习如何使用 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);
4

1 回答 1

2

在 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 的外观和感觉,但按钮可能看起来更像您所期望的。

于 2013-09-23T15:45:11.553 回答