`

swing-tree-右键菜单-增删改(转,可以用)

 
阅读更多
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

public class TreePopupMenu extends JFrame implements MouseListener, ActionListener {

//    private static final long serialVersionUID = 1L;
    JTree tree;
    JPopupMenu popMenu;//右键菜单
    JMenuItem addItem;//添加
    JMenuItem delItem;//删除
    JMenuItem editItem;//修改

    public TreePopupMenu() {
        tree = new JTree();
        tree.setEditable(true);
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.addMouseListener(this);
        tree.setCellEditor(new DefaultTreeCellEditor(tree, new DefaultTreeCellRenderer()));
        setSize(200, 200);

        popMenu = new JPopupMenu();
        addItem = new JMenuItem("添加");
        addItem.addActionListener(this);
        delItem = new JMenuItem("删除");
        delItem.addActionListener(this);
        editItem = new JMenuItem("修改");
        editItem.addActionListener(this);

        popMenu.add(addItem);
        popMenu.add(delItem);
        popMenu.add(editItem);

        getContentPane().add(new JScrollPane(tree));
    }

    public void mouseClicked(MouseEvent e) {

    }

    public void mouseEntered(MouseEvent e) {

    }

    public void mouseExited(MouseEvent e) {

    }

    public void mousePressed(MouseEvent e) {
        TreePath path = tree.getPathForLocation(e.getX(), e.getY());  
        if (path == null) {
            return;
        }
        tree.setSelectionPath(path);

        if (e.getButton() == 3) {
            popMenu.show(tree, e.getX(), e.getY());
        }
    }

    public void mouseReleased(MouseEvent e) {

    }

    public void actionPerformed(ActionEvent e) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
        if (e.getSource() == addItem) {
            ((DefaultTreeModel) tree.getModel()).insertNodeInto(new DefaultMutableTreeNode("Test"),
                                                                node, node.getChildCount());
            tree.expandPath(tree.getSelectionPath());
        } else if (e.getSource() == delItem) {
            if (node.isRoot()) {
                return;
            }
            ((DefaultTreeModel) tree.getModel()).removeNodeFromParent(node);
        } else if (e.getSource() == editItem) {
            tree.startEditingAtPath(tree.getSelectionPath());
        }
    }

    public static void main(String[] args) {
        TreePopupMenu frame = new TreePopupMenu();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

 

分享到:
评论

相关推荐

    swing-layout-1.0.3

    swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...

    swing-inspector

    使用Swing-inspector,开发者可以: 1. **快速定位元素**:通过简单的界面交互,即可找到UI元素在代码中的定义,无需在大量的代码中手动搜索。 2. **查看组件属性**:获取组件的详细信息,如大小、位置、颜色、字体...

    swing-layout-1.0.4.jar包

    swing-layout-1.0.4.jar是org.jdesktop.layout,org.jdesktop.layout.GroupLayout类的工具jar包

    swing-layout-1.0.jar

    在Eclipse中,使用`swing-layout-1.0.jar`库文件可以提升Java Swing应用的界面设计效率和用户体验。开发者可以通过引入这个库,利用其提供的高级布局管理器和辅助工具,创建出更美观、更灵活的用户界面。同时,这也...

    swing鼠标右键功能实现

    这个例子也使用`MouseListener`监听鼠标事件,但使用`mouseReleased`方法,因为对于Swing组件,右键释放会触发弹出菜单。 ```java addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e...

    swt源码和jar包dj-native-swing-swt.jar

    这使得开发者可以在同一应用程序中同时使用Swing和SWT的优点,比如利用Swing的可移植性和SWT的高性能。 描述中提到了"swt开发需要的jar包,32位。需要在32为浏览器中使用",这意味着这个库是针对32位系统的,如果你...

    aspect-swing-worker-1.1.jar.zip

    使用"aspect-swing-worker-1.1.jar",开发者可以编写出更加健壮、响应更迅速的Swing应用,同时保持代码的整洁和模块化。在实际项目中,正确地集成和利用这个库,能够有效地提升用户体验,减少因为UI卡顿带来的用户...

    drag-drop-folder-tree.rar_Tree 菜单_drag drop java_drag-drop-fold

    本文将深入探讨“drag-drop-folder-tree.rar”这个压缩包所包含的资源,它提供了一个强大的动态树视图,支持节点的拖放操作,并且允许用户通过右键点击进行交互。 首先,"Tree 菜单"指的是在图形用户界面中用于展示...

    scala-swing-tree_2.10-0.1.1.zip

    ScalaSwingTree.zip,scala swing的jtree componenttree组件的scala swing包装器。镜像https://git.iem.at/sciss/scalaswingtree

    swing-Java游戏.zip

    swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏....

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-...

    swing-worker-1.1.jar

    Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker ... at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue...

    java右键菜单源码

    本资源“java右键菜单源码”可能是提供了一个实现这种功能的示例代码库,帮助开发者理解如何在Java Swing或JavaFX中创建和使用右键菜单。 在Java Swing中,右键菜单主要通过JPopupMenu类来实现。下面我们将深入探讨...

    luke-swing-8.0.0-luke-release.zip

    Lucene索引查看工具 Luke。Luke 是查询LUCENE索引文件的工具, 而且用 Luke 的Search可以做查询。Luke is a handy development and diagnostic to Lucene.

    swing-layout-1.0.4.jar

    swing-layout-1.0.4.jar是java用于图形界面swing开发的jar包

    swing-tips-helper(swing-tips 例子助手)包含swing-tips的900多种swing各种实现例子

    1. 可以用来作为学习swing的辅助工具 2. 可以作为你没有思路时的一盏灯塔 3. 使用方式 java -jar swing-tips-helper.jar ,如果你需要源码及资源及更多详细介绍参考该地址 ...

    基于Java的swing-explorer(Swing开发辅助工具).zip

    Java Swing是Java标准库中的一个组件,用于构建桌面应用程序用户界面。...通过实践和使用Swing-explorer,开发者不仅可以提升Swing应用的开发速度,还能增强对GUI设计的理解,创建出更加美观和用户友好的桌面应用。

    Swing-layout-1.2.jar

    内含三个java图像处理和界面开发必备的三个jar包,swing-lauout-1.0.jar \ metadata-extractor-2.7.0.jar \ xmpcore-5.1.2.jar

Global site tag (gtag.js) - Google Analytics