编程语言
首页 > 编程语言> > Java Swing:JToolbar如何改变按钮的外观?

Java Swing:JToolbar如何改变按钮的外观?

作者:互联网

当您将JButton添加到JToolbar时,该按钮会采用特定的外观(如果将其添加到Jpanel中则不同).
我创建了一些类似于JToolbar的组件,我想要相同的行为.
问题:我检查了JToolbar类,找到一些特定的代码来改变添加组件的外观(更改组件特定的绘制方法或UI代理等).我没找到任何东西!我不明白JToolbar是如何工作的.
谁能解释一下它是如何工作的?

非常感谢,

Herve Guillaume

解决方法:

这似乎是由MetalButtonUI类的update()方法处理的.以下是JDK5_07的代码:

public void update(Graphics g, JComponent c) {
    AbstractButton button = (AbstractButton)c;
    if ((c.getBackground() instanceof UIResource) &&
              button.isContentAreaFilled() && c.isEnabled()) {
        ButtonModel model = button.getModel();
        if (!MetalUtils.isToolBarButton(c)) {
            if (!model.isArmed() && !model.isPressed() &&
                    MetalUtils.drawGradient(
                    c, g, "Button.gradient", 0, 0, c.getWidth(),
                    c.getHeight(), true)) {
                paint(g, c);
                return;
            }
        }
        else if (model.isRollover() && MetalUtils.drawGradient(
                    c, g, "Button.gradient", 0, 0, c.getWidth(),
                    c.getHeight(), true)) {
            paint(g, c);
            return;
        }
    }
    super.update(g, c);
}

isToolBarButton()方法只是检查父Container是否是JToolBar,所以我想一个解决方案是始终将JButton添加到JToolBar,然后将工具栏添加到真正的Container.

否则,我想,您需要编写自己的自定义UI并覆盖update()方法.

标签:java,swing,jbutton,custom-component,jtoolbar
来源: https://codeday.me/bug/20190621/1251853.html