1
У меня есть JTree чо имеет рендерер подобные:Edit JTree с текстовым полем
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 отображаются с возможностью переименования текущего узла.
Но я действительно не знаю, как сообщить узлу отображать текстовое поле вместо метки, подлежащей редактированию.
Спасибо. Я сделал что-то подобное, но когда я щелкнул левой кнопкой мыши по узлу, это станет редактируемым. Не только нажав на меню правой кнопки мыши. EDIT: Я нашел, как это сделать на http://stackoverflow.com/a/21138857/1479829 – Florent06