- 浏览: 117243 次
- 来自: ...
-
最新评论
-
calljunny:
多谢多谢!弄了两天,找了两天了,总算在楼主这里找到真正的问题了 ...
有关SSL的问题 -
xiaolv:
String indexDir = "d:\\Tem ...
Lucene使用指南 -
linchixiong:
学习了,最近做一个练习时发现了会响应两次,现在终于知道为什么了 ...
ListSelectionListener,鼠标选中,键盘选中 -
t8500071:
神贴啊~~刚好遇到用bat执行代码时连接sqlserver出现 ...
有关SSL的问题 -
fangfan:
Jony HWong你好,我正在试验这段程序,这段程序有一个地 ...
java实现Windows资源管理器(JExplorer)
程序仅仅实现了仿Windows资源管理器的本地文件的浏览功能,不能通过“网上邻居”浏览邻近的电脑,另外,“控制面板”和“垃圾箱”也没能列出来。
程序包括3个文件,分别是JExplorer.java、FileTree.java和FileList.java。可以在网页中tl.exercise.swing文件夹中找到。其中FileTree.java中定义了一个用来显示Windows文件夹的树;顾名思义FileList.java中定义的是列表,不够这个列表很简单;main函数在JExplorer.java里面。
树的实现其实很简单,主要使用了两个技术:
1. 使用javax.swing.filechooser.FileSystemView列举系统文件夹,获得系统图标。
2. 使用javax.swing.tree.DefaultTreeCellRenderer改变Node的图标。
===================================================================
// FileTree.java
/***********************************************************
* Author: Jason
* email: tl21cen@hotmail.com
* CSDN blog: http://blog.csdn.net/UnAgain/
***********************************************************/
package tl.exercise.swing;
import java.awt.Component;
import java.io.File;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class FileTree extends JTree {
static final long serialVersionUID = 0;
private FileList theList;
public FileTree(FileList list) {
theList = list;
setModel(new FileSystemModel(new FolderNode()));
this.setCellRenderer(new FolderRenderer());
addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent tse) {
}
});
this.setSelectionRow(0);
}
public void fireValueChanged(TreeSelectionEvent tse) {
TreePath tp = tse.getNewLeadSelectionPath();
Object o = tp.getLastPathComponent();
// theList.fireTreeSelectionChanged((PathNode)o);
theList.fireTreeSelectionChanged((FolderNode) o);
}
public void fireTreeCollapsed(TreePath path) {
super.fireTreeCollapsed(path);
TreePath curpath = getSelectionPath();
if (path.isDescendant(curpath)) {
setSelectionPath(path);
}
}
public void fireTreeWillExpand(TreePath path) {
System.out.println("Path will expand is " + path);
}
public void fireTreeWillCollapse(TreePath path) {
System.out.println("Path will collapse is " + path);
}
class ExpansionListener implements TreeExpansionListener {
FileTree tree;
public ExpansionListener(FileTree ft) {
tree = ft;
}
public void treeCollapsed(TreeExpansionEvent tee) {
}
public void treeExpanded(TreeExpansionEvent tee) {
}
}
}
class FileSystemModel implements TreeModel {
I_fileSystem theRoot;
char fileType = I_fileSystem.DIRECTORY;
public FileSystemModel(I_fileSystem fs) {
theRoot = fs;
}
public Object getRoot() {
return theRoot;
}
public Object getChild(Object parent, int index) {
return ((I_fileSystem) parent).getChild(fileType, index);
}
public int getChildCount(Object parent) {
return ((I_fileSystem) parent).getChildCount(fileType);
}
public boolean isLeaf(Object node) {
return ((I_fileSystem) node).isLeaf(fileType);
}
public int getIndexOfChild(Object parent, Object child) {
return ((I_fileSystem) parent).getIndexOfChild(fileType, child);
}
public void valueForPathChanged(TreePath path, Object newValue) {
}
public void addTreeModelListener(TreeModelListener l) {
}
public void removeTreeModelListener(TreeModelListener l) {
}
}
interface I_fileSystem {
final public static char DIRECTORY = 'D';
final public static char FILE = 'F';
final public static char ALL = 'A';
public Icon getIcon();
public I_fileSystem getChild(char fileType, int index);
public int getChildCount(char fileType);
public boolean isLeaf(char fileType);
public int getIndexOfChild(char fileType, Object child);
}
/**
* A data model for a JTree. This model explorer windows file system directly.
*
* <p>
* Perhaps there is a fatal bug with this design. For speed, each of instances
* of this model contains file objects of subdirectory, up to now, there isn't
* any method to release them until program be end. I'm afraid that the memory
* would be full of if the file system is large enough and JVM memery size
* setted too small.
*
* <p>
* I won't pay more attention to solve it. it isn't goal of current a exercise.
*
* @author Jason
*/
class FolderNode implements I_fileSystem {
// private static FolderNode theRoot;
private static FileSystemView fsView;
private static boolean showHiden = true;;
private File theFile;
private Vector<File> all = new Vector<File>();
private Vector<File> folder = new Vector<File>();
/**
* set that whether apply hiden file.
*
* @param ifshow
*/
public void setShowHiden(boolean ifshow) {
showHiden = ifshow;
}
public Icon getIcon() {
return fsView.getSystemIcon(theFile);
}
public String toString() {
// return fsView.
return fsView.getSystemDisplayName(theFile);
}
/**
* create a root node. by default, it should be the DeskTop in window file
* system.
*
*/
public FolderNode() {
fsView = FileSystemView.getFileSystemView();
theFile = fsView.getHomeDirectory();
prepareChildren();
}
private void prepareChildren() {
File[] files = fsView.getFiles(theFile, showHiden);
for (int i = 0; i < files.length; i++) {
all.add(files[i]);
if (files[i].isDirectory()
&& !files[i].toString().toLowerCase().endsWith(".lnk")) {
folder.add(files[i]);
}
}
}
private FolderNode(File file) {
theFile = file;
prepareChildren();
}
public FolderNode getChild(char fileType, int index) {
if (I_fileSystem.DIRECTORY == fileType) {
return new FolderNode(folder.get(index));
} else if (I_fileSystem.ALL == fileType) {
return new FolderNode(all.get(index));
} else if (I_fileSystem.FILE == fileType) {
return null;
} else {
return null;
}
}
public int getChildCount(char fileType) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.size();
} else if (I_fileSystem.ALL == fileType) {
return all.size();
} else if (I_fileSystem.FILE == fileType) {
return -1;
} else {
return -1;
}
}
public boolean isLeaf(char fileType) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.size() == 0;
} else if (I_fileSystem.ALL == fileType) {
return all.size() == 0;
} else if (I_fileSystem.FILE == fileType) {
return true;
} else {
return true;
}
}
public int getIndexOfChild(char fileType, Object child) {
if (child instanceof FolderNode) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.indexOf(((FolderNode) child).theFile);
} else if (I_fileSystem.ALL == fileType) {
return all.indexOf(((FolderNode) child).theFile);
} else if (I_fileSystem.FILE == fileType) {
return -1;
} else {
return -1;
}
} else {
return -1;
}
}
}
class FolderRenderer extends DefaultTreeCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
I_fileSystem node = (I_fileSystem) value;
Icon icon = node.getIcon();
setLeafIcon(icon);
setOpenIcon(icon);
setClosedIcon(icon);
return super.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, hasFocus);
}
}
=========================================================
// JExplorer.java
package tl.exercise.swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.border.BevelBorder;
public class JExplorer {
public static void main(String[] args) {
//JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new UI(frame));
frame.pack();
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int left = (screen.width - frame.getWidth()) / 2;
int top = (screen.height - frame.getHeight()) / 2;
frame.setLocation(left, top);
frame.setVisible(true);
}
}
class UI extends JPanel {
//implements I_menuHandler{
static final long serialVersionUID = 0l;
static int LEFT_WIDTH = 200;
static int RIGHT_WIDTH = 300;
static int WINDOW_HEIGHT = 300;
JFrame frame = null;
public UI(JFrame frame) {
//EmptyBorder eb = new EmptyBorder(1,1,1,1);
this.frame = frame;
setPreferredSize(new Dimension(800, 600));
setBorder(new BevelBorder(BevelBorder.LOWERED));
setLayout(new BorderLayout());
FileList list = new FileList();
FileTree tree = new FileTree(list);
tree.setDoubleBuffered(true);
list.setDoubleBuffered(true);
JScrollPane treeView = new JScrollPane(tree);
treeView.setPreferredSize(
new Dimension(LEFT_WIDTH, WINDOW_HEIGHT));
JScrollPane listView = new JScrollPane(list);
listView.setPreferredSize(
new Dimension(RIGHT_WIDTH, WINDOW_HEIGHT));
JSplitPane pane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, treeView,
listView);
pane.setDividerLocation(300);
pane.setDividerSize(4);
//pane.setDoubleBuffered(true);
add(pane);
}
}
==========================================================
// FileList.java
package tl.exercise.swing;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
public class FileList
extends JList{
//PathNode theNode;
FileListModel dataModel;
static final long serialVersionUID = 10;
public FileList() {
dataModel = new FileListModel();
setModel(dataModel);
this.setCellRenderer(new MyCellRenderer());
}
public void fireTreeSelectionChanged(I_fileSystem node) {
//Vector files = node.getFiles();
//theNode = node;
dataModel.setNode(node);
updateUI();
}
}
class FileListModel
implements ListModel {
FileList theList;
I_fileSystem node;
char fileType = I_fileSystem.ALL;
public void setNode (I_fileSystem node) {
this.node = node;
}
public Object getElementAt(int index) {
if (node != null) {
return ((I_fileSystem)node).getChild(fileType, index);
} else {
return null;
}
}
public int getSize() {
if (node != null) {
return ((I_fileSystem)node).getChildCount(fileType);
} else {
return 0;
}
}
public void addListDataListener(ListDataListener l) {
}
public void removeListDataListener(ListDataListener l) {
}
}
class MyCellRenderer extends JLabel implements ListCellRenderer {
public MyCellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
FolderNode node = (FolderNode)value;
setIcon(node.getIcon());
setText(value.toString());
setBackground(isSelected ? Color.BLUE.darker().darker(): Color.WHITE);
setForeground(isSelected ? Color.WHITE : Color.BLACK);
return this;
}
}
程序包括3个文件,分别是JExplorer.java、FileTree.java和FileList.java。可以在网页中tl.exercise.swing文件夹中找到。其中FileTree.java中定义了一个用来显示Windows文件夹的树;顾名思义FileList.java中定义的是列表,不够这个列表很简单;main函数在JExplorer.java里面。
树的实现其实很简单,主要使用了两个技术:
1. 使用javax.swing.filechooser.FileSystemView列举系统文件夹,获得系统图标。
2. 使用javax.swing.tree.DefaultTreeCellRenderer改变Node的图标。
===================================================================
// FileTree.java
/***********************************************************
* Author: Jason
* email: tl21cen@hotmail.com
* CSDN blog: http://blog.csdn.net/UnAgain/
***********************************************************/
package tl.exercise.swing;
import java.awt.Component;
import java.io.File;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class FileTree extends JTree {
static final long serialVersionUID = 0;
private FileList theList;
public FileTree(FileList list) {
theList = list;
setModel(new FileSystemModel(new FolderNode()));
this.setCellRenderer(new FolderRenderer());
addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent tse) {
}
});
this.setSelectionRow(0);
}
public void fireValueChanged(TreeSelectionEvent tse) {
TreePath tp = tse.getNewLeadSelectionPath();
Object o = tp.getLastPathComponent();
// theList.fireTreeSelectionChanged((PathNode)o);
theList.fireTreeSelectionChanged((FolderNode) o);
}
public void fireTreeCollapsed(TreePath path) {
super.fireTreeCollapsed(path);
TreePath curpath = getSelectionPath();
if (path.isDescendant(curpath)) {
setSelectionPath(path);
}
}
public void fireTreeWillExpand(TreePath path) {
System.out.println("Path will expand is " + path);
}
public void fireTreeWillCollapse(TreePath path) {
System.out.println("Path will collapse is " + path);
}
class ExpansionListener implements TreeExpansionListener {
FileTree tree;
public ExpansionListener(FileTree ft) {
tree = ft;
}
public void treeCollapsed(TreeExpansionEvent tee) {
}
public void treeExpanded(TreeExpansionEvent tee) {
}
}
}
class FileSystemModel implements TreeModel {
I_fileSystem theRoot;
char fileType = I_fileSystem.DIRECTORY;
public FileSystemModel(I_fileSystem fs) {
theRoot = fs;
}
public Object getRoot() {
return theRoot;
}
public Object getChild(Object parent, int index) {
return ((I_fileSystem) parent).getChild(fileType, index);
}
public int getChildCount(Object parent) {
return ((I_fileSystem) parent).getChildCount(fileType);
}
public boolean isLeaf(Object node) {
return ((I_fileSystem) node).isLeaf(fileType);
}
public int getIndexOfChild(Object parent, Object child) {
return ((I_fileSystem) parent).getIndexOfChild(fileType, child);
}
public void valueForPathChanged(TreePath path, Object newValue) {
}
public void addTreeModelListener(TreeModelListener l) {
}
public void removeTreeModelListener(TreeModelListener l) {
}
}
interface I_fileSystem {
final public static char DIRECTORY = 'D';
final public static char FILE = 'F';
final public static char ALL = 'A';
public Icon getIcon();
public I_fileSystem getChild(char fileType, int index);
public int getChildCount(char fileType);
public boolean isLeaf(char fileType);
public int getIndexOfChild(char fileType, Object child);
}
/**
* A data model for a JTree. This model explorer windows file system directly.
*
* <p>
* Perhaps there is a fatal bug with this design. For speed, each of instances
* of this model contains file objects of subdirectory, up to now, there isn't
* any method to release them until program be end. I'm afraid that the memory
* would be full of if the file system is large enough and JVM memery size
* setted too small.
*
* <p>
* I won't pay more attention to solve it. it isn't goal of current a exercise.
*
* @author Jason
*/
class FolderNode implements I_fileSystem {
// private static FolderNode theRoot;
private static FileSystemView fsView;
private static boolean showHiden = true;;
private File theFile;
private Vector<File> all = new Vector<File>();
private Vector<File> folder = new Vector<File>();
/**
* set that whether apply hiden file.
*
* @param ifshow
*/
public void setShowHiden(boolean ifshow) {
showHiden = ifshow;
}
public Icon getIcon() {
return fsView.getSystemIcon(theFile);
}
public String toString() {
// return fsView.
return fsView.getSystemDisplayName(theFile);
}
/**
* create a root node. by default, it should be the DeskTop in window file
* system.
*
*/
public FolderNode() {
fsView = FileSystemView.getFileSystemView();
theFile = fsView.getHomeDirectory();
prepareChildren();
}
private void prepareChildren() {
File[] files = fsView.getFiles(theFile, showHiden);
for (int i = 0; i < files.length; i++) {
all.add(files[i]);
if (files[i].isDirectory()
&& !files[i].toString().toLowerCase().endsWith(".lnk")) {
folder.add(files[i]);
}
}
}
private FolderNode(File file) {
theFile = file;
prepareChildren();
}
public FolderNode getChild(char fileType, int index) {
if (I_fileSystem.DIRECTORY == fileType) {
return new FolderNode(folder.get(index));
} else if (I_fileSystem.ALL == fileType) {
return new FolderNode(all.get(index));
} else if (I_fileSystem.FILE == fileType) {
return null;
} else {
return null;
}
}
public int getChildCount(char fileType) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.size();
} else if (I_fileSystem.ALL == fileType) {
return all.size();
} else if (I_fileSystem.FILE == fileType) {
return -1;
} else {
return -1;
}
}
public boolean isLeaf(char fileType) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.size() == 0;
} else if (I_fileSystem.ALL == fileType) {
return all.size() == 0;
} else if (I_fileSystem.FILE == fileType) {
return true;
} else {
return true;
}
}
public int getIndexOfChild(char fileType, Object child) {
if (child instanceof FolderNode) {
if (I_fileSystem.DIRECTORY == fileType) {
return folder.indexOf(((FolderNode) child).theFile);
} else if (I_fileSystem.ALL == fileType) {
return all.indexOf(((FolderNode) child).theFile);
} else if (I_fileSystem.FILE == fileType) {
return -1;
} else {
return -1;
}
} else {
return -1;
}
}
}
class FolderRenderer extends DefaultTreeCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
I_fileSystem node = (I_fileSystem) value;
Icon icon = node.getIcon();
setLeafIcon(icon);
setOpenIcon(icon);
setClosedIcon(icon);
return super.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, hasFocus);
}
}
=========================================================
// JExplorer.java
package tl.exercise.swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.border.BevelBorder;
public class JExplorer {
public static void main(String[] args) {
//JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new UI(frame));
frame.pack();
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int left = (screen.width - frame.getWidth()) / 2;
int top = (screen.height - frame.getHeight()) / 2;
frame.setLocation(left, top);
frame.setVisible(true);
}
}
class UI extends JPanel {
//implements I_menuHandler{
static final long serialVersionUID = 0l;
static int LEFT_WIDTH = 200;
static int RIGHT_WIDTH = 300;
static int WINDOW_HEIGHT = 300;
JFrame frame = null;
public UI(JFrame frame) {
//EmptyBorder eb = new EmptyBorder(1,1,1,1);
this.frame = frame;
setPreferredSize(new Dimension(800, 600));
setBorder(new BevelBorder(BevelBorder.LOWERED));
setLayout(new BorderLayout());
FileList list = new FileList();
FileTree tree = new FileTree(list);
tree.setDoubleBuffered(true);
list.setDoubleBuffered(true);
JScrollPane treeView = new JScrollPane(tree);
treeView.setPreferredSize(
new Dimension(LEFT_WIDTH, WINDOW_HEIGHT));
JScrollPane listView = new JScrollPane(list);
listView.setPreferredSize(
new Dimension(RIGHT_WIDTH, WINDOW_HEIGHT));
JSplitPane pane =
new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, treeView,
listView);
pane.setDividerLocation(300);
pane.setDividerSize(4);
//pane.setDoubleBuffered(true);
add(pane);
}
}
==========================================================
// FileList.java
package tl.exercise.swing;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
public class FileList
extends JList{
//PathNode theNode;
FileListModel dataModel;
static final long serialVersionUID = 10;
public FileList() {
dataModel = new FileListModel();
setModel(dataModel);
this.setCellRenderer(new MyCellRenderer());
}
public void fireTreeSelectionChanged(I_fileSystem node) {
//Vector files = node.getFiles();
//theNode = node;
dataModel.setNode(node);
updateUI();
}
}
class FileListModel
implements ListModel {
FileList theList;
I_fileSystem node;
char fileType = I_fileSystem.ALL;
public void setNode (I_fileSystem node) {
this.node = node;
}
public Object getElementAt(int index) {
if (node != null) {
return ((I_fileSystem)node).getChild(fileType, index);
} else {
return null;
}
}
public int getSize() {
if (node != null) {
return ((I_fileSystem)node).getChildCount(fileType);
} else {
return 0;
}
}
public void addListDataListener(ListDataListener l) {
}
public void removeListDataListener(ListDataListener l) {
}
}
class MyCellRenderer extends JLabel implements ListCellRenderer {
public MyCellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
FolderNode node = (FolderNode)value;
setIcon(node.getIcon());
setText(value.toString());
setBackground(isSelected ? Color.BLUE.darker().darker(): Color.WHITE);
setForeground(isSelected ? Color.WHITE : Color.BLACK);
return this;
}
}
- jexplore.rar (4.7 KB)
- 下载次数: 226
评论
1 楼
fangfan
2010-03-15
Jony HWong你好,我正在试验这段程序,这段程序有一个地方让我很不明白。
这里FileNode的构造函数中由FileSystemView提供默认的路径文件,是不是当执行FileTree当中的构造函数
setModel(new FileSystemModel(new FolderNode()));
之后整个树JTree就创建了吗?
整个创建树的过程中,只看到一层层的遍历磁盘文件,并把文件对象加在上层结点,并没有看到直接的AddNode
若没有创建树,那么在整个树的创建过程中,除了根节点,其他的结点怎么加上去的呢?
这里FileNode的构造函数中由FileSystemView提供默认的路径文件,是不是当执行FileTree当中的构造函数
setModel(new FileSystemModel(new FolderNode()));
之后整个树JTree就创建了吗?
整个创建树的过程中,只看到一层层的遍历磁盘文件,并把文件对象加在上层结点,并没有看到直接的AddNode
若没有创建树,那么在整个树的创建过程中,除了根节点,其他的结点怎么加上去的呢?
发表评论
-
【jira3.6破解版】界面中文乱码问题解决办法
2012-03-23 17:30 3166原因: jira3.6版本默认的界面字符编码为big5。 ... -
Extjs实现快捷键CTRL+TAB对Tabpanel进行Tab切换
2012-03-16 17:24 4060// 注册ctrl+tab组合键到keymap ... -
Lucene使用指南
2011-12-09 15:20 4925Lucene使用指南 Lu ... -
memcache及其telnet命令使用详解
2011-09-19 11:34 299301、启动Memcache 常用参数memcached 1. ... -
java序列化的一点经验
2011-08-12 22:07 4308java序列化的一点经验 半年多一来,一直碰到一个问题没有解决 ... -
Jad.exe反编译工具和jad eclipse插件
2011-01-26 16:19 3651配置jad插件 直接将net.sf.jadclipse_3 ... -
smartcare各类文档
2010-09-18 21:41 0smartcare各类文档 -
Sock Demo
2010-08-23 00:40 0Sock Demo -
实时监控方案分析
2010-08-10 02:05 0实时监控方案分析 -
数据库连接池-C3P0配置
2010-08-03 00:43 4250>>转自:http://hi.baidu.com/ ... -
Linux自动化分区
2010-07-31 22:35 0#!/bin/bash disk='/dev/hdc' e ... -
JVM调优
2010-07-19 01:06 1167JVM调优 -
LVS集群
2010-07-16 00:57 1029LVS集群 -
Application Layer Gateway Service 和 FTP
2010-05-17 22:41 1834Application Layer Gateway Servi ... -
FTP - RFC959 中文版
2010-05-14 00:02 4549转自:http://www.chinaitpower.com/ ... -
网络地址转换NAT
2010-05-13 23:57 2537网络地址转换(NAT,Network Address Tran ... -
Firewall rules for FTP+SSL Explicit
2010-05-10 01:14 1349Firewall rules for FTP+SSL Expl ... -
ftp与防火墙
2010-05-10 00:54 2644下面是针对ftp与防火墙的: 原文在 https://bbs ... -
区分网上邻居
2010-03-11 01:12 959ShellFolder.get("fileChoos ... -
论FTP的主动被动和相关的防火墙设置
2009-09-08 00:32 3085FTP 分为两类: 主动FTP( ...
相关推荐
《jExplorer:Java Swing中的网页嵌入神器》 在IT领域,尤其是在开发桌面应用程序时,有时我们...无论你是Java初学者还是经验丰富的开发者,jExplorer都能帮助你轻松实现网页浏览功能,提升你的应用程序的用户体验。
如果你是开发者,你可以下载并研究其源代码,学习如何用 Java 实现一个资源管理器,或者根据自己的需求对其进行定制和扩展。对于非开发者用户,你可以自行编译安装这个项目,以体验这款由 Java 编写的 Linux 资源...
JExplorer.java可能是这个资源管理器的主要实现类,它可能包含了整个应用的主窗口、菜单栏、工具栏以及其他UI元素的设置。在这个类中,开发者可能会实例化JTree和JList,并将它们添加到适当的容器(如JScrollPane)...
Java实现的资源管理器,通常被称为“文件浏览器”或“文件管理器”,是用于在操作系统中查看、管理和操作文件及目录的应用程序。在这个特定的例子中,"JExplorer.rar" 是一个压缩包,其中包含了使用Java Swing库开发...
7. **设计模式**:作为一个复杂的软件项目,jExplorer可能会采用一些常见的设计模式,如单例模式(管理全局资源)、工厂模式(创建对象)、观察者模式(事件处理)等,以提高代码的可维护性和可扩展性。 8. **版本...
有问题欢迎来信讨论: talent_marquis@163.com<br><br>才搜索了一下,发现jExplorer这个名字已经泛滥了 <br>最核心代码来自IBM的JFace教程 链接如下: ... <br>已经实现的基本功能: <br>1....
1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互) 2. 添加创建新文件夹功能 3. 添加选择全部/文件/文件夹功能 4. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理 5. FileUtil中增加...
JExplorer树 文件管理组件,具有基本操作和DnD支持 特征 它旨在用于特定项目目录(工作区)的上下文中。 它并非旨在完全浏览文件系统。 延迟加载(仅在扩展时) 没有额外的依赖关系(扩展JPanel并使用JTree) ...
为了实现这些高级特性,可能需要对JTree进行更复杂的定制或者使用第三方库,如JExplorer或JFileBrowser。 在"java实现系统目录树控件.txt"文档中,应该详细记录了实现这个功能的完整代码和可能遇到的问题及其解决...
综上所述,C4JExplorer 插件是 Java 开发者实现契约设计和提升代码质量的有力工具。结合开源的 C4J 框架,它为开发者提供了一个完整的解决方案,以保证代码的正确性和健壮性,同时利用开源社区的力量持续改进和优化...
软件:JZoomer 版本:1.0 作者:Marquis Hou<甜菜侯爵... JExplorer实现,初步了解JFace框架的设计思想,了解Action的使用方法 <br>20070730 1. ColorPicker实现,其中含有部分放大镜功能,但有内存溢出Bug
添加ColorInfoPanel用于显示和拾取颜色 ·在ColorAction添加ColorInfoPanel相关的资源、逻辑和方法 ·添加TrackerAction用以实现对图片大小的测量(未实现) 4. 版本变更: 版本升级为1.1 5. 待做...
在ColorAction添加ColorInfoPanel相关的资源、逻辑和方法 ·添加TrackerAction用以实现对图片大小的测量(未实现) 4. 版本变更: 版本升级为1.1 5. 待做事项: ·停止监控时图片的缩放 ·...