JTreeのノード上でJPopupMenuを表示
Total: 6877
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTree
のノード上でクリックした場合のみ、JPopupMenu
を表示します。
Screenshot
Advertisement
サンプルコード
class TreePopupMenu extends JPopupMenu {
protected TreePopupMenu() {
super();
add("path").addActionListener(e -> {
JTree tree = (JTree) getInvoker();
JOptionPane.showMessageDialog(
tree, tree.getSelectionPaths(), "path",
JOptionPane.INFORMATION_MESSAGE);
});
add("JMenuItem");
}
@Override public void show(Component c, int x, int y) {
if (c instanceof JTree) {
JTree tree = (JTree) c;
TreePath path = tree.getPathForLocation(x, y);
if (tree.getSelectionCount() > 0
&& Arrays.asList(tree.getSelectionPaths()).contains(path)) {
super.show(c, x, y);
}
}
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTree
のノードが選択されている、かつ選択されたノード上にカーソルがある場合のみJPopupMenu
を表示可能に設定しています。