`

JTree右键菜单小例

阅读更多
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 Test extends JFrame implements MouseListener,ActionListener {
	
	private static final long serialVersionUID = 1L;
	JTree tree;
	JPopupMenu popMenu;
	JMenuItem addItem;
	JMenuItem delItem;
	JMenuItem editItem;

	public Test() {
		tree = new JTree();
		tree.setEditable(true);
		tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
		tree.addMouseListener(this);
		tree.setCellEditor(new DefaultTreeCellEditor(tree, new DefaultTreeCellRenderer()));
		getContentPane().add(tree);
		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) {
		Test frame = new Test();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
分享到:
评论

相关推荐

    java右键菜单源码

    这里的`component`是你希望添加右键菜单的组件,如`JTable`, `JTree`, 或者自定义的`JPanel`。 4. **处理菜单事件**: 当用户点击菜单项时,你可以通过添加`ActionListener`来处理这些事件。例如: ```java item...

    jtree和QQ项目\带有右键的树(数据库)

    本项目聚焦于`JTree`组件的使用,尤其是在结合数据库和右键菜单功能的情况下。`JTree`是Swing中表示层次数据的一种控件,常用于展示文件系统、组织结构或其他具有层级关系的数据。 首先,`JTree`允许用户通过节点来...

    Java右键弹出菜单源码.7z

    JFrame frame = new JFrame("右键菜单示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); // 将菜单添加到组件的MouseListener frame.addMouseListener(new ...

    JTree用法及JTree使用经验总结及源码

    1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键弹出菜单 9、关于JTree的展开 10、如何...

    JTree2.0

    5. **用户交互**:包含如何处理用户的点击、拖放操作,以及如何添加右键菜单。 6. **性能优化**:讨论懒加载策略,仅在需要时加载子节点以提高大型树的性能。 7. **定制外观**:介绍如何使用`TreeCellRenderer`改变...

    swing界面设计之JTree

    #### (五) JTree右键菜单实现编辑、添加、删除节点 **Test.java源代码**:示例代码展示了如何在JTree上添加右键菜单,并实现编辑、添加、删除等功能。 #### (六) 功能齐全的JTree例子 **TreeEditTest.java源代码*...

    JTree2.0 目录树

    - **右键菜单**:可集成右键点击菜单,扩展更多功能。 7. **兼容性**: JTree2.0通常兼容主流浏览器,如Chrome、Firefox、Safari、Edge等,但可能对较旧版本或非主流浏览器支持有限。 8. **实际应用**: - 文件...

    JTree with JCheckBox的资料整理

    在Java Swing库中,`JTree`是一个组件,用于显示...在实际项目中,还可以根据需求进行进一步的定制,比如添加拖放功能、右键菜单等。在学习和实践过程中,参考同行们的实例会非常有帮助,这有助于理解和掌握这个技术。

    java 树型菜单建立

    在Java编程中,树型菜单是一种常见的用户界面元素,它以层次结构展示数据,便于用户进行导航和操作。本文将详细讲解如何使用Java来构建一个动态的、可交互的树型菜单,包括从数据库获取数据、创建树节点、实现添加和...

    树控件(Tree)

    介绍了树控件中的日期控件,树菜单控件,右键菜单控件,会对JTree有更深的了解。

    Tree菜单上下移动

    为了满足不同的业务需求,Tree菜单往往需要支持自定义扩展,如添加图标、自定义右键菜单、节点拖放等。开发者需要设计灵活的API和插件机制,让用户可以轻松扩展功能。 总结来说,"Tree菜单上下移动"是软件中常见的...

    JAVA写的读取ini文件

    3. **右键菜单**:提供操作选项,如“打开”文件,这可能是通过文件选择对话框实现的,让用户选择要读取的INI文件。 4. **编辑器**:允许用户直接在程序中修改INI文件的内容。 5. **实现TreeModel接口**:为了将数据...

    Java目录树控件

    - 用户可以通过点击节点来展开、折叠,或者通过右键菜单提供复制、粘贴、删除等操作。 5. **优化性能**: - 对于大型文件系统,一次性加载所有节点可能导致性能问题。可以使用懒加载策略,只在用户展开节点时加载...

    学生信息管理系统 java图形化界面

    本系统中,可能包括JTable用于显示学生信息,JTree展示层级关系,以及JPopupMenu实现右键菜单。 3. **数据库管理**:系统与MySQL数据库进行交互,存储和检索学生数据。通过JDBC(Java Database Connectivity)接口...

    Java编程100例\Java编程36例

    1. **实例10:右键弹出菜单** - 这个例子展示了如何在Java Swing中实现右键点击事件,创建上下文敏感的菜单。通过MouseListener和PopupMenu类,你可以学习到事件监听和用户交互设计的基本原理。 2. **实例1:产生...

    java .

    jframe显示方式 JOptionPane提示信息 jtree media mp3 java sql2000 java sql server java sql语句 标题栏图标 多线程 鼠标右键菜单 新建文件夹 在jframe 上画直线 Java2-9JDBC编程)----高手怎样炼成的!

    java-Swing课本配套资料

    4. **菜单和菜单项**:JMenu和 JMenuItem 允许创建下拉菜单,JPopupMenu 可以实现右键菜单。通过实例,你可以学会如何组织菜单结构和响应菜单事件。 5. **表(Table)和树(Tree)组件**:JTable用于显示二维数据,...

    基于SWING的QQ聊天模拟

    2. 联系人管理:包括添加、删除和查找联系人,这些功能可以通过菜单栏或右键菜单实现。 3. 在线状态显示:使用图标或文字表示用户在线、离线等状态,可以使用JLabel和ImageIcon配合完成。 4. 好友分组:使用JTree...

Global site tag (gtag.js) - Google Analytics