【发布时间】:2012-02-05 01:06:21
【问题描述】:
我在设置 JButton 的背景颜色时遇到问题。
例如,当我做button.setBackground(Color.ORANGE) 时我会得到这个
但是,当我禁用 GTK 外观和感觉时,一切正常。 另一种设置背景的方法? 谢谢。
【问题讨论】:
标签: java swing jbutton look-and-feel setbackground
我在设置 JButton 的背景颜色时遇到问题。
例如,当我做button.setBackground(Color.ORANGE) 时我会得到这个
但是,当我禁用 GTK 外观和感觉时,一切正常。 另一种设置背景的方法? 谢谢。
【问题讨论】:
标签: java swing jbutton look-and-feel setbackground
GTK 外观定义了它自己的视觉呈现按钮的方式,因此当您使用“button.setBackground(Color.ORANGE)”时,它只会更改按钮的底层背景,然后 GTK 外观会自己绘制(灰色)背景顶部按钮的表示。
如果您想要一个简单的橙色按钮,您可以将按钮的 UI 更改为您自己的,例如:
public static void main ( String[] args )
{
JButton orangeButton = new JButton ( "X" );
orangeButton.setUI ( new MyButtonUI ());
}
private static class MyButtonUI extends BasicButtonUI
{
public void paint ( Graphics g, JComponent c )
{
JButton myButton = ( JButton ) c;
ButtonModel buttonModel = myButton.getModel ();
if ( buttonModel.isPressed () || buttonModel.isSelected () )
{
g.setColor ( Color.GRAY );
}
else
{
g.setColor ( Color.ORANGE );
}
g.fillRect ( 0, 0, c.getWidth (), c.getHeight () );
super.paint ( g, c );
}
}
此代码示例将创建一个按钮,按下时为灰色,未按下时为橙色。 当然,您可以随意设置绘画的样式并更改按钮视图。
【讨论】: