Я пытаюсь визуализировать узел JTree как JButton, я уже пытался создать DefaultMutableTreeNode с объектом Jbutton и добавил его в JTree:
JButton button = new JButton("Thing");
DefaultMutableTreeNode root = new DefaultMutableTreeNode(button);
JTree alberoClassi = new JTree(root);
Они показывают только строку ошибки с черными параметрами.
Поискав в сети, я нашел только то, что мне нужен класс TreeRendererCell, но ни один из результатов не показывает, как его использовать.
Есть ли какие-нибудь учебные пособия, где я могу найти несколько примеров для выполнения задачи?




Наконец мне удалось решить проблему с помощью внешнего класса, который реализует интерфейс javax.swing.tree.TreeCellRenderer.
public class ClassCellRenderer implements javax.swing.tree.TreeCellRenderer {
JLabel className = new JLabel(" ");
JButton renderer = new JButton();
DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
public ClassCellRenderer() {
renderer.add(className);
}
@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 String) {
String e = (String) userObject;
className.setText(e);
}
returnValue = renderer;
}
if (returnValue == null) {
returnValue = defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded,
leaf, row, hasFocus);
}
return returnValue;
}
}
JLabel и JButton можно заменить любым другим необходимым компонентом. Чтобы добавить рендерер в дерево, я использовал следующие строки:
alberoClassi = new JTree(root);
TreeCellRenderer renderer = new ClassCellRenderer();
alberoClassi.setCellRenderer(renderer); //aggiunta del renderer per i nodi
Что-то вроде это