在IntelliJ IDEA工具窗口中的按钮动作中的树状视图

时间:2018-07-09 10:57:04

标签: java intellij-idea plugins intellij-plugin intellij-15

我正在使用工具窗口开发Intellij Idea插件。在我的工具窗口中,我必须在树中所有子元素的附近都有一棵树和按钮。

我创建树并添加了按钮。一次,我将向您展示我的工作方式。

这是MyCellRenderer类

static class MyCellRenderer implements TreeCellRenderer, ActionListener {
JLabel label;
JButton button;
JPanel renderer;
DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
Color backgroundSelectionColor;
Color backgroundNonSelectionColor;

public MyCellRenderer(){

Border emptyBorder = BorderFactory.createEmptyBorder(2, 0, 2, 2);

renderer = new JPanel(new GridLayout(1,6));
label  = new JLabel(" ");
label.setForeground(Color.black);
label.setBorder(emptyBorder);
button = new JButton();
button.setIcon(defaultSuppress);

//any of the button code under below didn't work now
button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);
button.setSize(16,16);

renderer.add(label);
renderer.add(button);
}


@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean
hasFocus) {

Component returnValue = null;

if ((value != null) && (value instanceof DefaultMutableTreeNode)) {Object userObject = ((DefaultMutableTreeNode) value).getUserObject();

if (userObject instanceof Leaf) { // my tree gets elements title and icon from the Leaf class  

Leaf leafObj = (Leaf) userObject;
label.setText(leafObj.getTitle());
button.setIcon(leafObj.getButtonImage());
renderer.setEnabled(tree.isEnabled());

returnValue = renderer;
    }
}

   if (returnValue == null) {

    returnValue = defaultRenderer.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus);
    }

return returnValue;
    }
}

我还有另外一个类,我在该类中创建了树。我没有分享它,因为它可以与图标和元素名称一起正常使用。

这是我的问题,我想在每个子元素右侧的按钮上添加操作,但我做不到。

当用户单击此按钮时,将在ide上打开一个html页面。

有人可以帮我吗?从现在开始非常感谢!

0 个答案:

没有答案