Lwuit TabbedPane无更新

原创 2017年01月03日 02:50:40
写了段代码,要显示文件目录及目录下的文件。要求使用TabbedPane(因为多个Pane显示不同的内容)。现我在实现一个显示本地文件目录的代码如下,可以显示根目录了,但是在点击root/后,Form突然就清空了,没有TabbedPane了。为什么???

谢谢....



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.TabbedPane;
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 Jsr75Test04 extends MIDlet {
private Form f;
private List directoryList;
private TabbedPane tpBrowser;
private String currDirName = "";
public final static String UPStr = "UP..";

public Jsr75Test04() {
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");
tpBrowser = new TabbedPane();
f.setLayout(new BorderLayout());
f.addComponent(BorderLayout.CENTER, tpBrowser);
directoryList = createDirectoryList();
tpBrowser.addTab("ViewEntry", 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();
tpBrowser.removeTabAt(0);
tpBrowser.addTab("ViewEntry", directoryList);
f.revalidate();
} else if (selStr.endsWith("/")) {
f.removeAll();
currDirName += selStr;
directoryList = createDirectoryList();
tpBrowser.removeTabAt(0);
tpBrowser.addTab("ViewEntry", directoryList);
f.revalidate();
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

TabbedPane使用实例

  • 2013-08-17 01:03
  • 10KB
  • 下载

LWUIT与LCDUI的结合

Lwuit与Lcdui可以相互调用,如果需要在一个Midlet中同时使用Lwuit和Lcdui库,需要在Midlet中保留一个Lcdui Display的全局变量,可以在startApp方法中初始化。...

LWUIT引路蜂地图开发示例:路径查询

可以通过RasterMap的getDirection()方法来查询路径,和查询地址类似,路径查询的结果也是通过回调函数的方式来通知应用程序的,下面的例子返回南京到北京的路径。返回结果存放在MapDir...

LWUIT 简易漂亮的相册

我用LWUIT做的这个相册有两个界面:   1.显示相片列表   2.显示相册原始图   具体实现:   1.显示相片列表   原始图片一般都是比较大的,在显示相册列表时,需要把这些大图生成缩略图,缩...

LWUIT引路蜂地图开发示例:选择地图服务

引路蜂地图服务缺省使用Google地图服务,但你也可以选择其它地图服务,比方说当Google服务离线时,您可以选择MapAbc的地图服务,另外要注意的是中国地图是有偏移的。如果想使用无偏移的中国地图,...

LWUIT显示漂亮的loading界面的两种方法

LWUIT显示漂亮的loading界面的两种方法

在eclipse上用lwuit的过程

下面是国外一个人发的在eclipse上用lwuit的过程。(是有很多注意的地方,感觉这个东西还是用sun的netbean方便) Hello all if you are an Eclips...

LWUIT引路蜂地图开发示例:地址查询

引路蜂地图API中同样提供了地址查询,路径查询,本地搜索,IP地址查询,地址反编码(通过经纬度查地名)等。 地址查询(或称为地址编码)是将输入的地名(如南京林业大学)转换成对应的经纬度坐标然后将其...

LWUIT引路蜂地图开发示例:叠加自定义图层

在开发应用的过程中,常常需要在地图上需绘制一点自定义的兴趣点或是自定义的几何图形。引路蜂地图包中RasterMap最终提供的基实就是一张图片 protected void paint(Graphic...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)