我在更改按钮背景的颜色时遇到问题,我刚开始学习如何操作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);
答案 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的外观和感觉,但按钮可能看起来更像你期望的那样。