您的位置:首页 > Web前端 > JavaScript

简单的一个jsr75例子--浏览本机文件夹及文件

2009-11-18 18:17 387 查看
效果图:












code:

package lab.sodino.jsr75;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.file.FileSystemRegistry;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.List;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.list.DefaultListModel;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
public class Jsr75Test03 extends MIDlet {
	private Form f;
	private List directoryList;
	private String currDirName = "";
	public final static String UPStr = "UP..";
	public Jsr75Test03() {
		Display.init(this);
		try {
			Resources r = Resources.open("/javaTheme.res");
			UIManager.getInstance().setThemeProps(r.getTheme("javaTheme"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		f = new Form("JSR75Form");
		f.setLayout(new BorderLayout());
		directoryList = createDirectoryList();
		f.addComponent(BorderLayout.CENTER, directoryList);
	}
	protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
		// TODO Auto-generated method stub  
	}
	protected void pauseApp() {
		// TODO Auto-generated method stub  
	}
	protected void startApp() throws MIDletStateChangeException {
		// TODO Auto-generated method stub  
		f.show();
	}
	private Vector getTraverseEntryItem(String currDirName) {
		Enumeration e = null;
		Vector vecItems = new Vector();
		if (currDirName.equals("")) {
			e = FileSystemRegistry.listRoots();
		} else {
			try {
				FileConnection currDir = (FileConnection) Connector.open("file:///" + currDirName);
				e = currDir.list();
				currDir.close();
			} catch (IOException e1) {
				System.out.println("go to catch file:///" + currDirName);
				e1.printStackTrace();
			}
		}
		//Folders first and then files, alphabetically arranged
		int folderCount = 0;
		while (e.hasMoreElements()) {
			String fileName = (String) (e.nextElement());
			if (fileName.endsWith("/")) {
				System.out.println("folder added " + fileName + "  folderCount = " + folderCount);
				vecItems.insertElementAt(fileName, folderCount);
				folderCount++;
			} else {
				System.out.println("file added " + fileName);
				vecItems.addElement(fileName);
			}
		}
		//if view a sub-directory folder, added the UPStr at the head.
		if (currDirName.equals("") == false) {
			vecItems.insertElementAt(UPStr, 0);
		}
		return vecItems;
	}
	private List createDirectoryList() {
		DefaultListModel model = new DefaultListModel(getTraverseEntryItem(currDirName));
		final List list = new List(model);
		list.setFixedSelection(List.FIXED_NONE_CYCLIC);
		list.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				updateCurrDirName(list.getSelectedItem().toString());
				System.out.println("sodino : " + list.getSelectedItem().toString());
			}
		});
		return list;
	}
	private void updateCurrDirName(String selStr) {
		if (selStr.equals(UPStr)) {
			f.removeAll();
			int i = currDirName.lastIndexOf('/', currDirName.length() - 2);
			if (i == -1) {
				currDirName = "";
			} else {
				currDirName = currDirName.substring(0, i + 1);
			}
			directoryList = createDirectoryList();
			f.addComponent(BorderLayout.CENTER, directoryList);
			f.revalidate();
		} else if (selStr.endsWith("/")) {
			f.removeAll();
			currDirName += selStr;
			directoryList = createDirectoryList();
			f.addComponent(BorderLayout.CENTER, directoryList);
			f.revalidate();
		}
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐