您的位置:首页 > 编程语言 > Java开发

一个用Java实现的Windows资源管理器 - FileList.java

2006-04-26 02:24 549 查看
// FileList.java

/*
* 一个用Java实现的Windows资源管理器
* 一个用Java实现的Windows资源管理器 - JExplorer.java
* 一个用Java实现的Windows资源管理器 - FileTree.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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: