gpt4 book ai didi

Java Swing : How JToolbar changes appearance of a button?

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:20 29 4
gpt4 key购买 nike

当您将 JButton 添加到 JToolbar 时,该按钮会采用特定的外观(与将其添加到 Jpanel 时不同)。我创建了一些类似于 JToolbar 的组件,我想要相同的行为。问题:我检查了 JToolbar 类以找到一些负责更改添加组件外观的特定代码(更改组件特定的绘制方法或 UI 委托(delegate)等)。我什么都没找到!我不明白 JToolbar 是如何工作的。谁能给我解释一下它是如何工作的?

非常感谢,

埃尔维·纪尧姆

最佳答案

这似乎是由 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 : How JToolbar changes appearance of a button?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603584/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com