package org.dm.swingTest;
import java.awt.EventQueue;
import java.awt.event.InputEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;import javax.swing.border.EmptyBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class AppDemo extends JFrame {
private JPanel contentPane;
private JTextField textField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AppDemo frame = new AppDemo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public AppDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
setTitle("测试");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(30, 20, 196, 217);
contentPane.add(scrollPane);
final JTree tree = new JTree();
scrollPane.setViewportView(tree); textField = new JTextField();
textField.setBounds(252, 35, 172, 27);
contentPane.add(textField);
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode note = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
String name = note.toString();//获得这个结点的名称
textField.setText(name);
}
});
//添加鼠标事件
tree.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
// 默认单击鼠标一下
// if(evt.getClickCount()==1){
// System.out.println("一下");
// }
//点击鼠标左键两下
// 1 左键
// 2 中键(Sun Mouse)
// 3 右键
if(evt.getModifiers()==InputEvent.BUTTON1_MASK && evt.getClickCount()==2) {
System.out.println("两下");
}
}
});
}
}
相关推荐
在实际应用中,你可能需要根据具体需求进行一些调整,例如限制拖放的类型、处理拖放事件的复杂逻辑、或者添加额外的用户反馈。总的来说,理解和实现`JTree`的拖放功能对于任何Java Swing开发者来说都是一个重要的...
`JTree` 支持多种类型的监听器,如 `TreeSelectionListener` 可以监听用户选择的改变,`TreeModelListener` 可以监听模型的变化,`TreeMouseListener` 和 `TreeKeyListener` 分别处理鼠标和键盘事件。 ### 功能特性...
`JTree`支持多种事件监听器,如`TreeSelectionListener`(用于监听节点选择变化)、`TreeModelListener`(用于监听模型变化)和`MouseListener`(用于处理鼠标事件)。这些监听器可以帮助我们响应用户与树交互的...
4. **事件监听**:可以添加TreeSelectionListener、TreeModelListener等监听器,监听用户的操作和数据的改变,实现相应的响应。 在“Swing JTree.doc”文档中,可能会详细讲解以下几个方面: 1. **创建JTree**:...
JTree支持多种事件监听器,包括: - `TreeSelectionListener`:监听节点选择变化,当用户选择或取消选择节点时触发。 - `TreeModelListener`:监听树模型的变化,如添加、删除或更改节点。 - `MouseListener`和`...
- **添加到容器**:将JTree添加到JFrame、JPanel等容器中。 例如: ```java DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); root.add(new DefaultMutableTreeNode("子节点1")); root.add...
- `MouseListener`和`MouseMotionListener`:处理鼠标点击和移动事件。 4. **样式与图标**: - 可以通过`setCellRenderer()`设置自定义的渲染器来改变节点的显示样式,包括文字颜色、字体等。 - `setClosedIcon...
4. **布局管理**:将`JTable`和`JTree`添加到容器(如`JFrame`或`JPanel`),并使用布局管理器进行布局。 5. **渲染自定义组件**:如果需要自定义单元格或节点的显示方式,可以实现`TableCellRenderer`或`...
- **给JTree添加右键弹出菜单**:可以使用`JPopupMenu`来创建上下文菜单。 - **关于JTree的展开**:控制树节点的展开与折叠,包括默认展开所有节点等操作。 - **如何遍历JTree**:使用递归算法或`Enumeration`接口...
6. **默认行为**: `JTree` 有预定义的键盘快捷键和鼠标操作,比如使用空格键选择节点,使用左右箭头展开或折叠节点。 7. **自定义渲染**: 通过实现 `TreeCellRenderer`,你可以定制节点的显示方式,包括字体、颜色...
当用户在`JTree`上点击右键时,可以通过监听鼠标事件并显示`JPopupMenu`来提供一系列与选中节点相关的操作。例如,用户可以右键点击某个表节点,弹出的菜单中包含“查看数据”、“编辑表结构”、“删除表”等选项。...
为了启用拖放功能,我们需要为JTree添加`TransferHandler`,这是一个处理数据转移的核心类: ```java jTree.setTransferHandler(new TreeTransferHandler()); ``` `TreeTransferHandler`需要实现`importData`和`...
为了解决这些问题,开源社区提供了一个名为`instrument/JTree`的扩展库,它为JTree添加了这些额外的功能,提升了开发效率和用户体验。 `instrument/JTree`库的核心特性包括: 1. **拖放支持**:用户可以直接通过...
- **事件处理**:JTree支持鼠标和键盘事件,如点击、双击、拖放等,开发者可以通过添加TreeSelectionListener监听节点选择变化,TreeMouseListener监听鼠标操作等。 - **节点操作**:可以添加、删除、重命名树节点...
接着,添加了鼠标监听器,以便捕获单元格的点击事件。 JTable的数据显示通过`addData`方法完成,但在这个示例中并未给出具体实现。通常,`addData`会涉及向TableModel添加数据,例如: ```java private void add...
为了处理用户的交互,如点击、拖放等,你需要为`JTree`添加事件监听器。`TreeSelectionListener`可以监听节点选择变化,而`MouseListener`则可以处理鼠标点击事件。 7. **性能优化**: 当文件系统非常大时,一次...
`MouseListener`用于监听用户对`JTree`的鼠标点击事件。在这个例子中,我们创建了一个`MouseAdapter`子类,并重写了`mouseClicked`方法,以便在点击树节点时更新文本框`jtf`的内容。 ```java tree.addMouseListener...
- `DefaultMutableTreeNode`: 这是`JTree`的基础节点类,它允许添加、删除和修改子节点。 - `DefaultTreeModel`: 作为树模型,它持有`DefaultMutableTreeNode`实例,并管理它们之间的关系。 2. **填充目录树** -...