在 NetBeans 中动态更改小部件的图标

Dynamically change icon of a widget in NetBeans

我目前正在为 NetBeans 开发一个插件(简而言之,目标是将我公司的工具集成到 NetBeans 中),我认为在小部件栏上有一个小部件会很好,以告诉我的工具是否是是否启用。

我看到Geertjan blog post 关于widget按钮,但是他做的是enable/disable按钮,我想做的是改变图标来通知用户工具状态,以及什么时候他点击它会变成 on/off 工具。

在 NetBeans 上可行吗?

我试图将 layer.xml iconbase 属性更改为动态更改此属性的方法,但它似乎不起作用,至少在我尝试时是这样 (<attr name="iconBase" stringvalue="TWIconWidget.CTCIcon.getIconPath"/>)

我还尝试在小部件的 actionPerformed() 上使用 ImageWidget 强制转换,但我找不到在小部件工具栏中查看它的方法。

关于如何执行此操作,您有任何提示吗?

提前致谢

编辑: 如果不可能,您能否提供一些替代方案,例如 slide button 或可以满足需要并在小部件栏上可见的东西

这个 post 展示了一种方法(致谢作者 Hermien Pellissier):http://www.pellissier.co.za/hermien/?p=646

基本上您使用 Netbeans 向导创建一个 Action 并修改它以从 AbstractAction 扩展并实现 Presenter.Toolbar.

然后您可以将 getToolbarPresenter() 覆盖为 return 您想要在工具栏中显示的任何 Component,例如 JButton 或自定义组件。

使用 Component 方法可以改变它的外观,例如:

public final class SomeAction extends AbstractAction implements Presenter.Toolbar {

    private JButton button;

    @Override
    public void actionPerformed(ActionEvent e) {
        // change the button image
        ImageIcon icon = new ImageIcon("another_image.png");
        button.setIcon(icon);
    }

    @Override
    public Component getToolbarPresenter() {
        ImageIcon icon = new ImageIcon("image.png");

        // create the button to show
        button = new JButton(icon);
        button.addActionListener(this);

        return button;
    }
}