Hi,
ich würde gerne bei einem Klick auf ein Image/Icon eine Action ausführen. Das Icon liegt in einem JTree.
Leider funktioniert es nicht wenn ich auf das "VIconComponent.VIEW" einen MouseListener lege. Ich vermute, dass dort noch was darüber liegt. Dieses "VIconComponent" ist von JComponent.
Gruß
Romsl
ich würde gerne bei einem Klick auf ein Image/Icon eine Action ausführen. Das Icon liegt in einem JTree.
Code:
public class VTreeCellRenderer extends DefaultTreeCellRenderer {
/**
* Sets the value of the current tree cell to <code>value</code>.
* If <code>selected</code> is true, the cell will be drawn as if
* selected. If <code>expanded</code> is true the node is currently
* expanded and if <code>leaf</code> is true the node represets a
* leaf and if <code>hasFocus</code> is true the node currently has
* focus. <code>tree</code> is the <code>JTree</code> the receiver is being
* configured for. Returns the <code>Component</code> that the renderer
* uses to draw the value.
*
* @return the <code>Component</code> that the renderer uses to draw the value
*/
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
boolean summable = false;
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object o = node.getUserObject();
if (o instanceof VDimension) {
summable = ((VDimension) o).isSummable();
}
}
Component label = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
JPanel panel = new JPanel(new BorderLayout());
panel.setBackground(Color.WHITE);
panel.add(label, BorderLayout.CENTER);
if (summable) {
panel.add(VIconComponent.VIEW, BorderLayout.EAST);
}
return panel;
}
}
Leider funktioniert es nicht wenn ich auf das "VIconComponent.VIEW" einen MouseListener lege. Ich vermute, dass dort noch was darüber liegt. Dieses "VIconComponent" ist von JComponent.
Gruß
Romsl