`
wanchong998
  • 浏览: 236036 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

LWUIT 一些细节疑难杂症整理笔记

阅读更多

1、textArea 显示文本内容,在部分手机上无法显示全部内容,每一行的最后几个字被挡住
琢磨了很久终于找了出来,解决方案如下:
TextArea txtContent = new TextArea(strContent, 12, 24);
//添加这一句即可
txtContent.setWidestChar('一');
2、若要对文本框中的内容设置补丁:
txtContent.getStyle().setPadding(Component.RIGHT, 10);
内容往右10像素。
3、如果list上不想要显示文字多余时的省略号
name.setEndsWith3Points(false);
4、重写Dialog要让标题与Form的样式一致
dialog.show(100, 100,100,100, true);
5、声音播放
try {
InputStream is = getClass().getResourceAsStream(
"/res/NewMailSound.wav");
Player player = Manager.createPlayer(is, "audio/x-wav");
player.start();
} catch (Exception e) {
e.printStackTrace();
}
6、使得TextField也能够在触屏手机上点击时出现输入编辑
解决方法:
在TextField源码上 加上editString();函数:
public void pointerReleased(int x, int y) {
// unlike text area the text field supports shifting the cursor with the touch screen
editString();
String text = getText();
int textLength = text.length();
int position = 0;
Font f = getStyle().getFont();
x -= getAbsoluteX();
for(int iter = 0 ; iter < textLength ; iter++) {
int width = f.substringWidth(text, 0, iter);
if(x > width) {
position = iter;
} else {
break;
}
}
if(position == textLength - 1) {
if(f.stringWidth(text) < x) {
position = textLength;
}
}
setCursorPosition(position);
repaint();
}
或者官方的解决方法:http://forums.java.net/jive/thread.jspa?threadID=52716
7、震动
public void MakeVibrate() {
new Thread() {
public void run() {
try {
Display.getInstance().vibrate(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
8、导致内存激增的原因(可以用自动模拟器的内存检测器进行监测C:\WTK2.5.2\bin\prefs.exe将你要的设置勾选)
而lwuit里面的源码有两句是会导致内存一直占用,一个是TextField中的这段代码

view plaincopy to clipboardprint?
// public boolean animate() {
// boolean ani = super.animate();
// if (hasFocus()) {
// long currentTime = System.currentTimeMillis();
// if (drawCursor) {
// if ((currentTime - cursorBlinkTime) > blinkOnTime) {
// cursorBlinkTime = currentTime;
// drawCursor = false;
// return true;
// }
// } else {
// if ((currentTime - cursorBlinkTime) > blinkOffTime) {
// cursorBlinkTime = currentTime;
// drawCursor = true;
// return true;
// }
// }
// if (pressedAndNotReleased) {
// if (currentTime - pressTime >= getLongClickDuration()) {
// longClick(pressedKeyCode);
// }
// } else {
// if (pendingCommit && currentTime - releaseTime > commitTimeout) {
// commitChange();
// }
// }
// } else {
// drawCursor = false;
// }
// return ani;
// }
// public boolean animate() {
// boolean ani = super.animate();
// if (hasFocus()) {
// long currentTime = System.currentTimeMillis();
// if (drawCursor) {
// if ((currentTime - cursorBlinkTime) > blinkOnTime) {
// cursorBlinkTime = currentTime;
// drawCursor = false;
// return true;
// }
// } else {
// if ((currentTime - cursorBlinkTime) > blinkOffTime) {
// cursorBlinkTime = currentTime;
// drawCursor = true;
// return true;
// }
// }
// if (pressedAndNotReleased) {
// if (currentTime - pressTime >= getLongClickDuration()) {
// longClick(pressedKeyCode);
// }
// } else {
// if (pendingCommit && currentTime - releaseTime > commitTimeout) {
// commitChange();
// }
// }
// } else {
// drawCursor = false;
// }
// return ani;
// }

一个是Display


lwuitGraphics.setGraphics(impl.getNativeGraphics());
这两个暂时还没有仔细去研究,但是确实吃内存的所在。
还有就是要巧用System.gc();进行内存回收,这样就会尽量的减少内存溢出的情况。
9、滚动条拖拽方向与内容显示相反,component中的代码修改如下

view plaincopy to clipboardprint?
public void pointerDragged(int x, int y) {
if (isScrollable() && isSmoothScrolling()) {
int axisValue;
if (isScrollableY()) {
axisValue = y;
} else {
axisValue = x;
}
if (!dragActivated) {
dragActivated = true;
beforeLastScrollY = axisValue;
lastScrollY = axisValue;
getComponentForm().setDraggedComponent(this);
}
//save time and locations to create velocity when the
//pointer is released
long currentTime = System.currentTimeMillis();
if (currentTime != lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]) {
lastTime[pLastDragged] = System.currentTimeMillis();
lastDragged[pLastDragged] = axisValue;
pLastDragged = (++pLastDragged) % lastTime.length;
}
beforeLastScrollY = lastScrollY;
lastScrollY = axisValue;
// we drag inversly to get a feel of grabbing a physical screen
// and pulling it in the reverse direction of the drag
if (isScrollableY()) {
int scroll = getScrollY() - (beforeLastScrollY - axisValue);
if (scroll >= 0 && scroll < getPreferredH() - getHeight()) {
setScrollY(scroll);
}
} else {
int scroll = getScrollX() - (beforeLastScrollY - axisValue);
if (scroll >= 0 && scroll < getPreferredW() - getWidth()) {
setScrollX(scroll);
}
}
} else {
//try to find a scrollable element until you reach the Form
Component parent = getParent();
if (!(parent instanceof Form)) {
parent.pointerDragged(x, y);
}
}
}
public void pointerDragged(int x, int y) {
if (isScrollable() && isSmoothScrolling()) {
int axisValue;
if (isScrollableY()) {
axisValue = y;
} else {
axisValue = x;
}
if (!dragActivated) {
dragActivated = true;
beforeLastScrollY = axisValue;
lastScrollY = axisValue;
getComponentForm().setDraggedComponent(this);
}
//save time and locations to create velocity when the
//pointer is released
long currentTime = System.currentTimeMillis();
if (currentTime != lastTime[(pLastDragged + lastTime.length + 1) % lastTime.length]) {
lastTime[pLastDragged] = System.currentTimeMillis();
lastDragged[pLastDragged] = axisValue;
pLastDragged = (++pLastDragged) % lastTime.length;
}
beforeLastScrollY = lastScrollY;
lastScrollY = axisValue;
// we drag inversly to get a feel of grabbing a physical screen
// and pulling it in the reverse direction of the drag
if (isScrollableY()) {
int scroll = getScrollY() - (beforeLastScrollY - axisValue);
if (scroll >= 0 && scroll < getPreferredH() - getHeight()) {
setScrollY(scroll);
}
} else {
int scroll = getScrollX() - (beforeLastScrollY - axisValue);
if (scroll >= 0 && scroll < getPreferredW() - getWidth()) {
setScrollX(scroll);
}
}
} else {
//try to find a scrollable element until you reach the Form
Component parent = getParent();
if (!(parent instanceof Form)) {
parent.pointerDragged(x, y);
}
}
}


10、开启wtk模拟器的触摸屏功能
打开\wtklib\devices\DefaultColorPhone目录下的DefaultColorPhone.properties文件(最好先安装一个UltraEdit之类的文本编辑器)。
然后找到touch_screen选项,修改为touch_screen=true

11、设置模拟器权限,以免开发过程中弹出烦人的提示
打开wtk模拟器。
选择Edit->Preferences->Security
然后将Security domain的选项设置为maximum。

12、内存和性能监视器
Edit->Preferences->Memory Monitor
Edit->Preferences->Profiler

13、出现安装后无法打开问题
有些Nokia手机会出现安装后无法打开,原因是安装包名称包含中文导致。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lwuit/archive/2009/12/03/4930931.aspx

分享到:
评论

相关推荐

    Lwuit一些简单测试小应用程序Demo

    这个"**Lwuit一些简单测试小应用程序Demo**"是基于LWUIT库编写的示例代码,用于展示LWUIT的功能和用法。 LWUIT的核心特点包括: 1. **跨平台兼容性**:LWUIT支持多种Java ME设备,包括不同的手机和平板电脑,使得...

    最新LWUIT_1_5

    LWUIT 1.5的发布意味着它可能解决了旧版本中的一些已知问题,并添加了对当时最新手机特性和技术的支持。 LWUIT的核心特性包括: 1. **组件库**:LWUIT提供了丰富的组件集合,如按钮、文本框、标签、列表、表格等,...

    LWUIT 入门资料个人整理

    ### LWUIT 入门知识点详解 #### 一、LWUIT 概览 LWUIT(Light Weight UI Toolkit)是一款轻量级的图形用户界面工具包,专为资源有限的移动设备设计,如手机和PDA。它提供了一系列丰富的用户界面组件和功能,帮助...

    LWUIT.jar LWUIT.jar

    LWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jar

    Lwuit入门程序测试一下Demo

    **LWUIT(Lightweight User Interface Toolkit)**是Java ME平台上的一个开源用户界面库,主要用于创建具有丰富图形效果和交互性的移动应用。这个库在早期的Java ME开发中非常流行,因为它允许开发者构建出与桌面...

    lwuit实例 lwuit j2me 界面

    描述中提到的“最新开源 j2me 资源代码”可能是指包含LWUIT库的最新版本或者是一些开发者社区共享的示例代码库,这些资源有助于开发者理解和学习如何在Eclipse这样的集成开发环境中使用LWUIT。Eclipse是一个广泛使用...

    lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo

    这个"lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo"压缩包包含的是LWUIT库的示例源代码,对于学习和理解LWUIT的使用方法非常有帮助。 LWUIT的主要目标是提供一套轻量级的UI组件,使得开发者能够在资源...

    LWUIT1.3code.rar_LWUIT

    - **Layout管理器**:LWUIT提供了一些布局管理器,如FlowLayout、BoxLayout和GridBagLayout等,它们负责组件在容器中的排列和对齐。 - **Form类**:作为LWUIT中的主要容器,Form通常用于承载多个组件和布局,是构建...

    lwuit 开发文档

    这些细节在LWUIT开发文档中都有详细的描述和说明。 由于文档部分是通过OCR扫描的,可能存在识别错误或遗漏,但根据上下文可以理解为开发者在创建LWUIT主题商店时需要设计用户友好的界面,并通过网络请求从服务器...

    lwuit-blackberry上移植的版本

    Lwuit在blackberry上的移植版本,使用subversion签下来的,我把这个从lwuit-incubator中提取出来的,里面有DOC和源码,不过它把4.2-4.7版本放在一起了,应用的时候需要根据自己项目实际进行裁剪和修改。

    LWUIT_3_1英文原版.part1

    The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等...

    LWUIT

    LWUIT( Lightweight UI Toolkit)是Java ME(J2ME)平台上的一款强大的用户界面(UI)框架,专门针对移动设备的资源限制而设计。LWUIT 提供了丰富的组件和可定制的外观,使得开发者能够创建出具有吸引力、功能丰富...

    lwuit 1.2.1lwuit 最新

    The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等...

    Hello LWUIT——LWUIT开发指南2

    《Hello LWUIT——LWUIT开发指南2》 LWUIT(Lightweight User Interface Toolkit)是Java ME平台上的一个开源用户界面库,它为开发者提供了丰富的UI组件和强大的设计工具,使得在移动设备上创建美观、交互性强的...

    lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫

    标题中的"lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫"表明这是一个与LWUIT相关的压缩包,内容可能包含了实现J2ME平台上九宫图功能的代码或资源。 九宫图是一种常见的界面布局方式,通常用于显示多个小视图,如...

    Hello LWUIT——LWUIT开发指南1

    《Hello LWUIT——LWUID开发指南1》 本文主要探讨的是LWUIT( Lightweight User Interface Toolkit )的开发技术,LWUIT是Java ME平台上的一款轻量级用户界面库,用于创建美观、功能丰富的移动应用程序。LWUIT提供...

    lwuit.rar_LWUIT_java 项目_手机动态

    LWUIT( Lightweight UI Toolkit )是Java ME(Micro Edition)平台上的一款开源用户界面库,专为移动设备设计,提供了一套丰富的组件和强大的动画效果,以创建吸引人的、交互性强的用户界面。这个名为“lwuit.rar_...

    javameUI库lwuit源码

    在"javameUI库lwuit源码"中,你将获得LWUIT库的源代码,这些源代码已经经过了修改,修复了一些已知的bug,可以直接放入项目的`src`目录下使用。 LWUIT 的主要特点包括: 1. **组件丰富**:LWUIT 提供了多种预定义...

    lwuit1.4介绍

    LWUIT 1.4 是一个轻量级用户界面工具包(Lightweight User Interface Toolkit),专为Java ME(J2ME)平台设计,用于构建功能丰富的移动应用程序。这个版本的LWUIT引入了一个名为HTMLComponent的新组件,极大地扩展...

    j2me ui lwuit 1.3

    以下是一些关于 LWUIT 1.3 的关键知识点: 1. **组件库**:LWUIT 包含了一套丰富的组件集合,如按钮、文本框、标签、列表、表格等,这些组件都经过优化,可以在资源有限的 J2ME 设备上高效运行。开发者可以利用这些...

Global site tag (gtag.js) - Google Analytics