Swing/TreeNodePopupMenu のバックアップの現在との差分(No.6)
- category: swing folder: TreeNodePopupMenu title: JTreeのノード上でJPopupMenuを表示 tags: [JTree, JPopupMenu, TreePath] author: aterai pubdate: 2009-06-01T15:04:19+09:00 description: JTreeのノード上でクリックした場合のみ、JPopupMenuを表示します。 image:
概要
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);
tree, tree.getSelectionPaths(), "path",
JOptionPane.INFORMATION_MESSAGE);
});
add("dummy");
add("JMenuItem");
}
#spanadd
#spanend
@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解説
上記のサンプルでは以下の場合、JPopupMenu
を表示しています。
上記のサンプルでは、JTree
のノードが選択されている、かつ選択されたノード上にカーソルがある場合のみJPopupMenu
を表示可能に設定しています。
-
JTree
のノードが選択されている - 選択されたノード上にカーソルがある