Я застрял в установке всплывающей подсказки к одному из моих JPanel, добавленному к узлу в JTree. Этот вопрос может быть похож на изменчивую всплывающую подсказку узла JTree, но не полностью.
Я также использую JTree, заполненный некоторыми (настраиваемыми) узлами. Каждый узел содержит флажок, поле цвета (JPanel) и путь узла. Я использую TreeCellRenderer. Я не размещал ниже код для того, что добавляется к узлу, поскольку я думаю, что это необязательно.
Ниже приведена часть моего кода:
public class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer {
private static final long serialVersionUID = 4025435851260573240L;
CheckTreeSelectionModel selectionModel;
private TreeCellRenderer delegate;
TristateCheckBox checkBox = new TristateCheckBox();
JPanel panel = new JPanel();
public CheckTreeCellRenderer(TreeCellRenderer delegate, CheckTreeSelectionModel selectionModel){
this.delegate = delegate;
this.selectionModel = selectionModel;
setLayout(new BorderLayout());
setOpaque(false);
checkBox.setOpaque(false);
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){
Component renderer = delegate.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
panel.setToolTipText("Hello");
removeAll();
add(checkBox, BorderLayout.WEST);
add(panel, BorderLayout.CENTER);
add(renderer, BorderLayout.EAST);
return this;
}
}
Как установить всплывающую подсказку для JPanel, добавленного в узел?
Взгляните на документы JTree.getToolTipText:
ПРИМЕЧАНИЕ. Чтобы JTree правильно отображал всплывающие подсказки своих рендереров, JTree должен быть зарегистрированным компонентом с помощью ToolTipManager. Это можно сделать, вызвав ToolTipManager.sharedInstance(). RegisterComponent (tree). Это не делается автоматически!
Это исправит это.