- 浏览: 734654 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import java.awt.*; import java.awt.event.*; import java.io.File; public class TreeDemo extends JFrame { private static final long serialVersionUID = 1L; private DefaultTreeModel createTreeModel() { // 创建根结点, 只执行一次 File root = new File("E:/"); FileNode rootNode = new FileNode(root); rootNode.explore(); // 第一层结构显示 return new DefaultTreeModel(rootNode); } public TreeDemo() { final JTree tree = new JTree(createTreeModel()); // 返回的是根结点 // DefaultTreeModel JScrollPane l_scrollPane = new JScrollPane(tree); getContentPane().add(l_scrollPane, BorderLayout.WEST); final JTextArea textArea = new JTextArea(10, 10); JScrollPane r_scrollPane = new JScrollPane(textArea); getContentPane().add(r_scrollPane, BorderLayout.CENTER); // getContentPane().add(GJApp.getStatusArea(), BorderLayout.SOUTH); tree.addTreeExpansionListener(new TreeExpansionListener() { // 重写JTree的事件监听器 public void treeCollapsed(TreeExpansionEvent e) { } public void treeExpanded(TreeExpansionEvent e) { TreePath path = e.getPath(); // 表示到某节点的一条路径 返回已被扩张 / // 折叠的值的路径 FileNode node = (FileNode) path.getLastPathComponent(); // 文件路径 // <- // (树)路径的最后一个组件 if (!node.isExplored()) { // public boolean // isExplored() { return // explored; } // 该节点从未打开时为false DefaultTreeModel model = (DefaultTreeModel) tree .getModel(); // 返回提供数据的 TreeModel GJApp.updateStatus("exploring ..."); UpdateStatus us = new UpdateStatus(); us.start(); node.explore(); model.nodeStructureChanged(node); // 当彻底改变节点的子节点和子节点的子节点... // 时调用该方法,这将导致记入一个 // treeStructureChanged // 事件 } } class UpdateStatus extends Thread { public void run() { try { Thread.sleep(450); } catch (InterruptedException e) { } SwingUtilities.invokeLater(new Runnable() { public void run() { GJApp.updateStatus(" "); } }); } } }); } public static void main(String args[]) { GJApp.launch(new TreeDemo(), "JTree File Explorer", 300, 300, 450, 400); } } class FileNode extends DefaultMutableTreeNode { private static final long serialVersionUID = 1L; private boolean explored = false; public FileNode(File file) { setUserObject(file); } public String toString() { File file = (File) getUserObject(); String filename = file.toString(); int index = filename.lastIndexOf(File.separator); return (index != -1 && index != filename.length() - 1) ? filename .substring(index + 1) : filename; } public boolean getAllowsChildren() { return isDirectory(); } public boolean isLeaf() { return !isDirectory(); } public File getFile() { return (File) getUserObject(); } // 文件 public boolean isExplored() { return explored; } public boolean isDirectory() { File file = getFile(); // 文件名 return file.isDirectory(); // 测试当前 File 对象表示的文件是否是一个路径, 还能展开 } public void explore() { // 递归实现 if (!isDirectory()) // 当前文件路径所对应是系统文件是文件夹吗? return; if (!isExplored()) { // 该层第一次被打开, 展开当前结点的所有子元素 File file = getFile(); // 该节点的用户对象 File[] children = file.listFiles(); for (int i = 0; i < children.length; ++i) add(new FileNode(children[i])); // 子元素被实例化, 并添加到当前节点下 // 系统是如何分辨子元素是文件夹还是文件, 因为涉及到两种图标 explored = true; System.out.println("文件夹被第一次打开, 添加新节点时执行"); } } } class GJApp extends WindowAdapter { static private JPanel statusArea = new JPanel(); static private JLabel status = new JLabel(" "); public static void launch(final JFrame f, String title, final int x, final int y, final int w, int h) { f.setTitle(title); f.setBounds(x, y, w, h); f.setVisible(true); statusArea.setBorder(BorderFactory.createEtchedBorder()); statusArea.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); statusArea.add(status); status.setHorizontalAlignment(JLabel.LEFT); f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); f.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent e) { System.exit(0); } }); } static public JPanel getStatusArea() { return statusArea; } static public void updateStatus(String s) { status.setText(s); } }
发表评论
-
Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力
2012-09-21 09:22 1636【摘要】 本文诣在 ... -
JavaSwing实现支持合并拆分的JTable
2010-12-16 15:39 1988GridBagModel:抽象模型接口。该接口用于描述表格中单 ... -
JTable小例子,表格中使用JComboBox下拉按钮
2010-12-16 15:21 5435import java.awt.BorderLayout; ... -
配合滚动面板实现JTable上下翻页的效果
2010-12-16 14:26 3434import java.awt.BorderLayout; ... -
JScrollBar简单演示例子
2010-12-06 19:28 6633import java.awt.*; import java ... -
点击jtable的表头,数据会根据根据表头来排序
2010-12-06 11:47 5150import javax.swing.JFrame; imp ... -
重写JSplitPane的BasicSplitPaneUI
2010-09-18 13:39 1590import java.awt.Color; import ... -
Swing窗口初始最大化的方法
2010-08-20 11:09 79301.设置窗口最大(伪最大化) JFrame frame =n ... -
Tree目录实现拖拽功能演示实例(DragAndDrop)
2010-08-10 16:49 1810import java.awt.BorderLayout; ... -
设置JTextPane指定内容的颜色
2010-05-21 14:29 1383package Assis; import java.a ... -
ScaleImageDemo图像缩小与放大演示
2010-05-12 14:59 2133package Assis; import java.a ... -
TreesDemo
2010-05-04 11:19 1110import java.awt.*; import java ... -
TableDemo
2010-05-04 11:17 1211import javax.swing.JTable; imp ... -
分割面板演示JSplitPaneDemo
2010-05-04 11:12 1409//Java Swing 带分隔条的面板代码 impor ... -
StylesExample8
2010-04-08 12:55 1223import javax.swing.*; import j ... -
StylesExample7
2010-04-08 12:54 1018import javax.swing.*; import j ... -
StylesExample6
2010-04-08 12:52 1079import javax.swing.*; import j ... -
StylesExample5
2010-04-08 12:51 1008import javax.swing.*; import j ... -
StylesExample4
2010-04-08 12:50 1133import javax.swing.*; import j ... -
StylesExample3
2010-04-08 12:50 1026import javax.swing.*; import j ...
相关推荐
在"jQuery树插件演示族谱Family tree"中,我们可以看到如何利用这些特性来呈现家庭成员间的亲缘关系。 二、构建族谱——Family Tree 1. 数据结构:首先,我们需要一个合适的数据结构来存储家族成员的信息,如姓名、...
`filetree`的实现可能包括以下核心功能: 1. **遍历目录**:通过递归遍历文件系统,获取每个目录和文件的信息。 2. **构建树形数据结构**:将遍历到的目录和文件转换为树形数据结构,每个节点代表一个目录或文件,...
在这个“树控件的演示”项目中,文件名“test”可能是一个示例数据库文件或包含代码示例的文件,用于展示如何实现上述功能。为了进一步学习和实践,你可以尝试打开这个文件,查看具体的代码实现,理解如何将数据库...
B树(Balanced Tree)是一种自平衡的树数据结构,它能够保持数据排序,并且在插入、删除和查找等操作时都能保持较高的效率。B树的主要特点是每个节点可以拥有多个子节点,这与二叉树(每个节点最多两个子节点)不同...
在网页开发中,数据的展示往往需要有层次结构,比如目录结构、组织架构等,这时候树形组件就显得尤为重要。Tree.js是一款优秀的JavaScript库,专门用于创建和管理树形结构,它以其强大的兼容性和可扩展性,成为...
最后,JavaScript负责实现树目录的交互功能。这里我们可以使用事件监听器来响应用户的点击操作,切换父节点的“open”类,从而控制子节点的显示和隐藏: ```javascript document.addEventListener('...
jQuery插件GridTree正是实现了这一功能,它为开发者提供了方便快捷的方式来构建表格树结构。 GridTree插件的最新更新(20091011版)主要集中在三个方面:样式完善、属性添加以及错误修复。这些改进提升了插件的用户...
总的来说,tabletree4J是一个强大且灵活的工具,能够帮助开发者快速构建出功能完备、层次清晰的树形菜单,尤其适合处理具有无限级分类的场景。结合其提供的示例和API文档,开发者可以高效地将其集成到自己的项目中,...
在这个特定的案例中,"VC实现的树形控件演示程序"是一个利用MFC中的CTreeCtrl类创建的示例应用。CTreeCtrl是MFC对Windows API中的HTREEITEM控件的封装,它允许程序员在应用程序中实现类似Windows资源管理器的树状...
通过以上内容,我们可以看出jstree是一个功能强大且灵活的jQuery插件,对于构建交互式目录树界面非常有帮助。无论是在网站导航、文件管理系统还是数据展示场景中,jstree都能提供出色的解决方案。
本文将详细讲解如何在Bootstrap环境下实现一个带有搜索功能的下拉树插件,并基于`bootstrap-select`和`bootstrap-treeview`两个库进行介绍。 首先,`bootstrap-select`是Bootstrap官方推荐的一个下拉菜单增强插件,...
**jQuery Tree 控件详解** jQuery Tree控件是一种用于在网页上展示层次结构数据的JavaScript组件,它基于流行的jQuery库...无论是新手还是经验丰富的开发者,都能通过这个控件快速实现树形结构的展示,提升用户体验。
【标题】"JSP无限级分类目录树_sorttree.zip"是一个关于使用JSP技术实现无限级分类目录树的资源包。这个项目可能包含了源代码、示例和相关的文档,旨在帮助开发者了解和实现如何在Web应用中构建一个可以动态扩展的...
3. **样例脚本**:项目可能包含一些示例脚本,演示如何将行为树集成到游戏逻辑中。这些脚本会解释如何创建和运行行为树,以及如何根据游戏状态更新节点。 4. **资源文件**:可能会包含一些预设(Prefab)或场景...
总的来说,这个项目演示了如何通过自定义模板和数据绑定在WPF的DataGrid中实现树形结构,对于理解和应用此类功能非常有帮助。开发者需要了解MVVM设计模式、数据绑定、HierarchicalDataTemplate、以及如何处理UI事件...
这个“一个漂亮的目录树代码(JS版)”是一个JavaScript实现的目录树组件,它可以帮助开发者创建美观且交互性强的文件或目录结构。下面我们将深入探讨这个话题。 首先,目录树是一种以树形结构展示文件系统或逻辑...
- **dtree.js**:核心JavaScript文件,包含了js tree的所有功能和逻辑,是实现树形菜单功能的关键。 - **img**:图像文件夹,存放了菜单节点的图标和其他相关图片资源,用于增强视觉效果。 综合以上信息,js tree是...
总的来说,这个实例演示了如何在ASP.NET中利用EasyUI Tree组件创建权限树或目录树,并实现点击节点时的交互功能,以及用户登录状态的管理。通过这种方式,可以构建出直观且易于操作的后台管理系统界面。
2. `demo`目录:包含示例代码和演示,帮助开发者了解如何使用z-tree的各种功能。 3. `dist`目录:编译后的JavaScript文件,供项目直接引用。 4. `images`目录:存放与树相关的图标和其他图像资源。 5. `js`目录:...
这个名为"JSP无限级分类目录树_sorttree.zip"的压缩包很可能包含了一个示例项目,用于演示如何在JSP中实现无限级分类目录树。 首先,我们需要了解Java中的数据结构,特别是树形结构。在无限级分类目录中,每个分类...