4

我在设置 JButtons 的背景颜色时遇到了麻烦。例如,当我这样做时,我得到了这个button.setBackground(Color.ORANGE) 在此处输入图像描述

但是当我禁用 GTK 外观和感觉时,就可以了。另一种设置背景的方法?谢谢。

4

1 回答 1

2

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 );
    }
}

此代码示例将创建一个按钮,按下时为灰色,未按下时为橙色。当然,您可以根据需要为绘画设置样式并更改按钮视图。

于 2012-03-22T16:40:19.053 回答