java - 背景颜色和 GTK 外观

标签 java swing jbutton look-and-feel setbackground

我在为 JButtons 设置背景颜色时遇到问题。 例如,当我执行 button.setBackground(Color.ORANGE) 时得到这个 enter image description here

但是当我禁用 GTK Look and Feel 时就没问题了。 另一种设置背景的方法? 谢谢。

最佳答案

GTK Look and Feel 定义了它自己的视觉呈现按钮的方式,因此当您使用“button.setBackground(Color.ORANGE)”时,它只会更改按钮底层背景,然后 GTK Look and Feel 会绘制自己的(灰色)背景顶部按钮的表示。

如果您想要一个简单的橙色按钮,您可以为自己的按钮更改按钮的 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 );
    }
}

此代码示例将创建一个按钮,按下时为灰色,未按下时为橙色。 当然,您可以根据自己的喜好设置绘画样式并更改按钮 View 。

关于java - 背景颜色和 GTK 外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146063/

相关文章:

java - SwingWorker 和命令行进程中断

java - JFrame 中的组件大小不可调整

java - JButton 的 NullPointerException

java - iText:使用 Xmp 在元数据中自定义 Xml 标签

java - 如何阻止 do...while 循环无限

java - 按键不起作用

java - 2D JButton 数组,想要为游戏添加 Action 监听器

java - web.xml 中的服务器端重定向?

java - 您使用 GWT 的体验如何?

java - 将 JScrollPane 添加到 JLabel