【发布时间】:2015-03-17 12:51:54
【问题描述】:
我有一个 JTree cho 有一个像这样的渲染器:
public class BrowserNodeRenderer extends DefaultTreeCellRenderer {
private JLabel label;
private JPanel panel;
private JLabel iconLabel;
private JTextField textField;
public BrowserNodeRenderer() {
this.panel = new JPanel();
final BorderLayout layout = new BorderLayout();
this.panel.setLayout(layout);
this.iconLabel = new JLabel();
this.label = new JLabel();
this.label.setOpaque(true);
//Unbold text
final Font f = this.label.getFont();
this.label.setFont(f.deriveFont(f.getStyle() & ~Font.BOLD));
this.panel.add(this.iconLabel);
this.panel.add(this.label, BorderLayout.CENTER);
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded,
boolean leaf, int row, boolean hasFocus) {
//Editing label and icon depending on rules
//...
return panel;
}
}
当我右键单击一个节点时,会显示一个 JPopup 菜单,其中包含重命名当前节点的选项。
但我真的不知道如何告诉节点显示一个文本字段来代替要编辑的标签。
【问题讨论】: