- 浏览: 241548 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
heartneo:
破解原作真是太厉害了。
Spket 1.6.18的简单破解 -
mwp1115:
谢谢,现在官方的demo代码还是jdk1.2的
Swing JTreeTable范例 -
bulktree:
Spket 谢谢了,js格式化 行宽太小了,你这个帮了我很大的 ...
Spket 1.6.18的简单破解 -
REGAL2T:
谢谢, 可以使用了
Spket 1.6.18的简单破解 -
wuwei1616:
我想问下lz 我生成了 wsdl文件 我用客户端去调用 怎么总 ...
调用CXF工具 生成 WSDL
在SWT/JFace中,带复选框树最好使用ContainerCheckedTreeViewer(或者CheckedTreeViewer)来实现,今天遇到直接使用tree来实现的。
简单备记:
import java.awt.image.BufferedImage; import java.io.File; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.filechooser.FileSystemView; import javax.swing.plaf.IconUIResource; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.internal.UIPlugin; /** * <p> * Title: MultiDirectoryDialog.java * </p> * <p> * Description: 文件选择框,支持多选 * </p> * */ public class MultiDirectoryDialog extends Dialog { // 菜单提示 private String message = ""; private Shell parent; // 列表树 private Tree tree; // 用来获取系统文件的相关信息 private FileSystemView fsv; // 用来存放选择的文件夹,用分号隔开 private StringBuilder resultFile = new StringBuilder(""); /** * 构造方法 * * @param parent * 父类 */ public MultiDirectoryDialog(Shell parent) { super(parent); this.parent = parent; } /* * (non-Javadoc) * * @see * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets * .Composite) */ protected Control createDialogArea(Composite parent) { parent.setDragDetect(false); Composite container = (Composite) super.createDialogArea(parent); container.setLayout(new FormLayout()); final Label showTipLabel = new Label(container, SWT.NONE | SWT.MULTI); showTipLabel.setText(message); final FormData fd_showTipLabel = new FormData(); fd_showTipLabel.top = new FormAttachment(0, 15); fd_showTipLabel.bottom = new FormAttachment(0, 32); fd_showTipLabel.right = new FormAttachment(0, 170); fd_showTipLabel.left = new FormAttachment(0, 30); showTipLabel.setLayoutData(fd_showTipLabel); final Composite treeComposite = new Composite(container, SWT.BORDER); treeComposite.setDragDetect(false); treeComposite.setLayout(new FormLayout()); // treeComposite.set // scrolledComposite.setAlwaysShowScrollBars(true); final FormData fd_scrolledComposite = new FormData(); fd_scrolledComposite.right = new FormAttachment(100, 0); fd_scrolledComposite.left = new FormAttachment(0, 0); fd_scrolledComposite.bottom = new FormAttachment(100, 0); fd_scrolledComposite.top = new FormAttachment(0, 50); treeComposite.setLayoutData(fd_scrolledComposite); // 新建树 tree = new Tree(treeComposite, SWT.DEFAULT); final FormData fd_tree = new FormData(); fd_tree.left = new FormAttachment(0, 5); fd_tree.bottom = new FormAttachment(0, 300); fd_tree.top = new FormAttachment(0, 0); fd_tree.right = new FormAttachment(0, 400); tree.setLayoutData(fd_tree); treeComposite.setData(tree); // 为树增加单击方法 tree.addListener(SWT.Expand, new Listener() { public void handleEvent(final Event event) { final TreeItem item = (TreeItem) event.item; TreeItem[] items = item.getItems(); for (int i = 0; i < items.length; i++) { if (items[i].getData() != null) return; items[i].dispose(); } // 初始化该文件下的节点 File file = (File) item.getData(); File[] childFile = file.listFiles(); for (File sfile : childFile) { if (sfile.isDirectory()) { initFile(item, sfile); } } } }); // 获取系统文件信息 fsv = FileSystemView.getFileSystemView(); File[] file = fsv.getRoots(); TreeItem item = new TreeItem(this.tree, SWT.NONE); String fileName = file[0].getName(); item.setText(fileName); item.setData(file[0]); Image img = getIcon(file[0]); if (img != null) item.setImage(img); // new TreeItem(item, 0); listFile(item, file[0], 1); return container; } /** * 本类用来初始化文件夹下的文件夹 * * @param treeitem * 父节点 * @param file * 要初始化的文件夹 * @param flag * 0:由外部调用,其它:递归调用 */ private void listFile(TreeItem treeitem, File file, int flag) { File[] childFile = file.listFiles(); if (flag == 0) {// 如果是外部调用,则再初始一级,以用来显示图标前的十一号。 for (File sfile : childFile) { if (sfile.isDirectory()) { // 初始化item的相关数据 TreeItem item = initFile(treeitem, sfile); // 初始化下一级item listFile(item, sfile, 1);// 只多这一行 } } } else {// 如果是自身调用,则说明已经为第二级文件夹,不需要再初始化下一级 for (File sfile : childFile) { if (sfile.isDirectory()) { initFile(treeitem, sfile); } } } } /** * 初始化item的相关数据 * * @param treeitem * 要初始化item的父item * @param file * 初始化item对应的file * @return 初始化后的item */ private TreeItem initFile(TreeItem treeitem, File file) { TreeItem item = new TreeItem(treeitem, SWT.NONE); item.setText(fsv.getSystemDisplayName(file)); item.setData(file); Image img = getIcon(file); if (img != null) item.setImage(img); // 如果还是文件夹,则加一个空节点,以使十号显示出来 if (file.isDirectory()) new TreeItem(item, 0); return item; } /** * 获取文件图标 * * @param file * 要获取图标的文件 * @return 图标 */ public Image getIcon(File file) { ImageData imageData = null; // 取得awt的icon对像并转化为swt的image对像 Icon icon = fsv.getSystemIcon(file); if (icon instanceof IconUIResource) { } else { // BufferedImage bi = ImageConvertor.getBufferedImage((ImageIcon) // icon); // imageData = ImageConvertor.getImageData(bi); // imageData = new Image(Display.getDefault(),50,50).getImageData(); } Image img = null; if (imageData != null) img = new Image(parent.getDisplay(), imageData); return img; } /** * Create contents of the button bar * * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, "确定", true); createButton(parent, IDialogConstants.CANCEL_ID, "取消", false); } /** SWT.MULTI创建出可以让用户作出多重选取的tree。SWT.CHECK样式的Tree会产生checkbox的Tree。如果使用了SWT.CHECK的样式,就需要判断哪些项目被选取了。通过调用TreeItem的getChecked()来判断某个项目是否被checked。下面的程序在循环中判断每个TreeItem的状态: TreeItem[] tia=t.getItems(); for(int i=0;i<tia.length;i++){ if(tia[i].getChecked()){ System.out.print("Checked"); } TreeItem []child=tia[i].getItems(); for(int n=0;n<child.length;n++) if(child[n].getChecked()) System.out.print("Checked"); } 以上的代码只能用在仅有一层子项目的tree上。多层的tree需要循环运算来处理。 SWT.CHECK样式的Tree对象在你需要让用户对Tree作出多重选取但又不想要SWT.MULTI模式的额外成本的时候是合适的(但若是要使用选取出的TreeItem来采取某些像是产生list内容这样的动作时则不适用) */ protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { TreeItem[] treeitem = tree.getItems(); for (int i = 0; i < treeitem.length; i++) { if (treeitem[i].getChecked()) { if (treeitem[i].getChecked()) { File file = (File) treeitem[i].getData(); resultFile.append(file.getPath()).append(";"); } } TreeItem[] child = treeitem[i].getItems(); for (int n = 0; n < child.length; n++) if (child[n].getChecked()) { File file = (File) child[n].getData(); resultFile.append(file.getPath()).append(";"); } } System.out.println(resultFile.toString()); } super.buttonPressed(buttonId); } /** * 设置 message * * @return */ public String getMessage() { return message; } /** * 获取message * * @param message */ public void setMessage(String message) { this.message = message; } /** * @return */ public StringBuilder getResultFile() { return resultFile; } /** * @param resultFile */ public void setResultFile(StringBuilder resultFile) { this.resultFile = resultFile; } public static void main(String[] args) { final Display display = Display.getDefault(); final Shell shell = new Shell(display, SWT.ON_TOP | SWT.CLOSE); shell.setSize(327, 253); Dialog dialog = new MultiDirectoryDialog(shell); if (dialog.open() == IDialogConstants.OK_ID) {// 是否单击“确定”按钮 System.out.println("helo"); } shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
发表评论
-
目录树的生成
2011-09-22 08:54 1391项目上线需要生成个目录树文件,本来可以用dos的tree就搞定 ... -
Eclipse Tip: Define Custom Content Types to Identify Your Data Files
2010-06-13 08:53 1213【转自】http://www.developer.com/ja ... -
WTP Facet 之 AddFilter
2010-06-11 14:22 1258做插件开发的人员都知道,如果你不晓得该使用那个Eclipse提 ... -
Properties文件的读写 : Properties操作示例
2010-04-21 14:19 1526package properties; import j ... -
wizardPage参考
2010-04-15 13:23 2512插件向导开发最好的例子莫过于Eclipse中本身一些向导,但如 ... -
如何访问当前Project???
2010-04-14 08:27 1124【转】http://wiki.eclipse.org/FAQ_ ... -
How to create dynamic web project using facets
2010-03-22 08:51 1486To create a blank faceted proje ... -
Introduction to the XSD Editor(XML Schema Editor)
2010-03-13 16:46 1353By Trung Ha August 30, 2006 ... -
同类编辑器只能打开一个
2010-02-23 13:28 1292在(http://sxw7362693.iteye.com/b ... -
通过事件驱动,创建不同的部件
2010-02-20 15:43 1072非常easy的东西,就是先dispose再create。 ... -
Swing JTreeTable范例
2009-08-21 13:48 3037由于工作需要,看了一点Swing的JtreeTable的实现。 ... -
SWT/JFACE——toolbar/toolItem
2009-04-23 22:47 10811工具栏通常有两种: toolbar、coolBar。两者的区 ... -
SWT-Menu篇
2009-04-23 17:12 3304今天用到Menu,本以为小菜一碟,都是老掉牙的东东了还不简单。 ... -
Eclipse.ini参数意义
2009-04-16 17:34 825eclipse.ini内存设置各参数含义 ... -
Editor的脏处理
2009-03-11 21:05 1716做编辑器Editor插件,肯定离不开对“脏”的处理。以前虽然也 ... -
SWT-Table按“行“进行编辑
2009-03-11 10:24 4692package table; /* * 通常在一个表 ... -
读取properties文件
2008-11-27 10:26 1839在 武晨伟的博客 http://blog.csdn.n ... -
移除Builders
2008-08-15 09:36 903public static void removeBuild ... -
Java项目classPath的添加
2008-08-15 09:28 3639// import org.eclipse.jem.workb ... -
tree file options
2008-08-15 08:47 1159package jface.treeviewer; impo ...
相关推荐
在Flex开发中,创建一个带有复选框的列表树是一种常见的需求,这通常用于实现用户对多级数据的筛选和选择。"Flex实现带复选框的列表树"这一主题涵盖了Flex编程、UI组件设计以及事件处理等多个方面的知识点。下面我们...
**jQuery高性能带复选框的树形结构插件——highchecktree** 在Web开发中,树形结构常常用于展示层级关系的数据,例如组织结构、文件系统等。`highchecktree`是一个专门针对这种情况设计的jQuery插件,它能高效地...
"基于layui模块制作的一款带复选框的tree结构树拓展包(带复选框)"是指layui框架的一个扩展组件,它将传统的tree结构与复选框相结合,实现了可勾选的树节点。在实际应用中,用户可以通过勾选不同级别的节点来选择...
本文将详细探讨"flex带复选框多选树三态树"这一主题,它融合了Flex布局、复选框交互以及多选树结构的三态逻辑。 首先,"flex带复选框的树"是指在Flex布局中,每个树节点不仅包含文本信息,还包含一个复选框。复选框...
在el-tree中,如果需要实现多选(复选框)功能,我们可以利用`show-checkbox`属性来开启复选框。在处理父子节点之间的关联性时,`check-strictly`属性扮演着关键角色。 `check-strictly`属性决定了父子节点之间是否...
在提供的`checktree`文件中,可能包含了HTML、CSS和JavaScript代码,通过这些代码我们可以深入了解如何实现这样一个树形复选框组件。对于开发者而言,理解并掌握这一技术可以帮助他们在项目中创建出更加直观、易用的...
"带有复选框的JS树状菜单"是一个常见的需求,它允许用户通过视觉层次结构来组织和选择数据。这种类型的菜单常用于文件管理器、设置面板或权限配置等场景。下面将详细介绍这个主题涉及的关键知识点。 首先,我们需要...
压缩包中的“checktree最好的递归树”可能是指实现复选框树的一种优化方法,即使用递归算法来处理节点间的依赖关系。递归是一种强大的编程技术,适用于处理树形结构数据。在处理复选框树时,递归可以帮助我们高效地...
在Vue.js框架中实现带复选框的树形菜单是一种常见的UI设计,通常用于显示层次结构的数据,并允许用户进行多级选择。这个例子展示了如何结合第三方库ZTree来创建这样一个功能。ZTree是一个基于JavaScript的树状菜单...
在JavaScript编程领域,"js树状地区三级级联带复选框"是一个常见的需求,尤其在构建具有地域选择功能的Web应用时。这个功能允许用户通过一个层级结构来选择国家、省份和城市,同时提供了复选框以支持多选。在本篇中...
在IT行业中,尤其是在...总的来说,`jQuery.tree`和`jQuery.treeview`为开发者提供了方便的工具,以创建带有复选框的树形结构,提升用户体验。正确地集成和使用这些插件,可以在多种场景下实现高效的数据管理和操作。
复选框树 * <一级标签><input data-id="{'fid':0}"/> <二级标签><\input data-id="{'fid':0,'sid',2}"/> <三级标签><\input data-id="{'fid':0,'sid',2,'tid':3}"/></三级标签> <三...
本文将详细介绍如何使用 dtree 来实现带有右键菜单和复选框功能的树形结构。 #### 二、dtree基本用法 为了更好地理解 dtree 的工作原理,我们首先通过官方示例来了解其基础配置和用法: 1. **引入 CSS 和 ...
EXT TREE扩展CHECKBOX JS是一种在EXT JS框架下对树形组件(Tree Panel)进行增强,实现复选框功能的技术。EXT JS是一个强大的JavaScript GUI库,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。在EXT JS中,...
1. **基本结构**:Ext checktree是Ext JS中的TreePanel的一个变体,它扩展了基本的树形视图,添加了复选框功能。每个节点都可以有一个复选框,用户可以通过勾选或取消勾选来选择或取消选择节点。 2. **配置选项**:...
在前端开发中,CheckBox Tree(复选框树)是一种常见的组件,用于展示具有层级关系的数据,并支持用户进行多级选择。这个"纯JS+HTML写的checkBox Tree 级联选中"实例,解决了其他示例中可能存在的BUG,提供了一个...
总结起来,jQuery CheckTree是一个强大的工具,它为Web开发人员提供了一种简便的方式来创建交互式的树形结构复选框。无论是在后台管理系统、文件浏览器还是内容分类中,都能发挥重要作用。掌握这个插件的使用,无疑...
每个节点通常会包含一个复选框(checkbox),用户可以通过点击复选框或者节点文本来选择或取消选择节点。 要实现默认选中项,你需要: 1. **遍历树结构**:获取所有节点,可以通过DOM遍历或者jQuery的选择器来实现...