我正在尝试创建一个JTree,其中一些节点是包含JLabel和JButton的复合对象.Node表示JLabel显示的服务器和端口,JButton将使用Desktop API打开默认浏览器并转到URL.
我已经阅读了以下内容,并尽可能地密切关注它们.节点显示我想要的方式(主要是 - 我可以处理以后更好),但当我尝试点击按钮时,JTree正在响应事件,而不是按钮.
http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm
我需要知道如何允许事件通过JTree,以便它们由下面的对象(JButton或JLabel)处理.
这是我的TreeCellEditor:
public class UrlValidationCellEditor extends DefaultTreeCellEditor
{
public UrlValidationCellEditor(JTree tree, DefaultTreeCellRenderer renderer)
{
super(tree, renderer);
}
@Override
public Component getTreeCellEditorComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row)
{
return renderer.getTreeCellRendererComponent(tree, value, true, expanded, leaf, row, true);
}
@Override
public boolean isCellEditable(EventObject anEvent)
{
return true; // Or make this conditional depending on the node
}
}
Run Code Online (Sandbox Code Playgroud)
这是TreeCellRenderer:
public class UrlValidationRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer
{
JLabel …Run Code Online (Sandbox Code Playgroud)