vì JTree & TreeModel không cung cấp chú giải công cụ thẳng ra khỏi hộp, bạn nghĩ gì, cách tốt nhất để có chú giải công cụ cụ thể cho JTree là gì?Cách tốt nhất để triển khai chú giải công cụ cho JTree?
Edit: (. Trả lời câu hỏi của riêng tôi sau đó)
@Zarkonnen: Cảm ơn ý tưởng getTooltipText.
tôi phát hiện ra khác (có lẽ vẫn còn một chút đẹp hơn) chiều với trọng DefaultTreeCellRenderer và nghĩ để chia sẻ nó:
public class JTreeWithToolTips {
private static class OwnRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
setToolTipText("foobar" + row);
return super.getTreeCellRendererComponent(tree, value, sel,
expanded, leaf, row, hasFocus);
}
}
public static void main(String[] args) {
JTree tree = new JTree(new Object[] { "foo", "bar", "foobar" });
tree.setCellRenderer(new OwnRenderer());
ToolTipManager.sharedInstance().registerComponent(tree);
JFrame frame = new JFrame();
frame.getContentPane().add(tree);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
câu trả lời của bạn phải ở trong một câu trả lời, để mọi người có thể bình chọn trên đó. –
DefaultTreeCellRenderer # getTreeCellRendererComponent được gọi là rất nhiều và làm điều này quá nặng có thể làm cho công cụ không hoạt động như mong đợi. Giống như các chú giải công cụ sẽ hiển thị, nhưng không hiển thị. Ghi đè JTree # getToolTipText (MouseEvent e) chỉ được gọi khi cần thiết và như vậy là một giải pháp tốt hơn nhiều! – NomeN
Khi tôi thử công cụ này, chú giải công cụ không hiển thị. Câu trả lời của Zarkonnen có hiệu quả. – Amber