高级界面与低级界面的切换

codeMoe 2010-12-02 09:40:48
RT.
就是我已经从低级界面切换到高级界面,但从高级界面切换到低级界面却不行。
display.setCurrent方法好像不行.
感觉应该没有用错,但是就是不行。
希望高手指点阿.
...全文
117 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
codeMoe 2010-12-03
  • 打赏
  • 举报
回复
求高手指点
codeMoe 2010-12-03
  • 打赏
  • 举报
回复
感谢各位解答啊,虽然没能解决我这个问题,但是我还是学习到东西了,谢谢各位,我结账啦哈哈
codeMoe 2010-12-03
  • 打赏
  • 举报
回复
OK,行了;
MainMidlet.display.setCurrent(MainMidlet.mainCanvas);
先获取回主canvas类的屏幕控制权;然后再
FormSearch2 fs = new FormSearch2();
MainMidlet.mainCanvas.ShowForm(fs);
重新启动线程和绘制该界面。

codeMoe 2010-12-03
  • 打赏
  • 举报
回复
主要是FormSearch2类自定义了onPaint(Graphics g)方法,继承于FormBase类
FormSearch2类没有paint(Graphics g)和run()
都由其他类来启动线程。以及所有的按键事件和绘制
kf156 2010-12-03
  • 打赏
  • 举报
回复
d = fs;
MainMidlet.display.setCurrent(d);

你改成
MainMidlet.display.setCurrent(fs);
fs.repaint();

如果还不行,将你的FormSearch2类贴下,我看下都绘制了什么
codeMoe 2010-12-03
  • 打赏
  • 举报
回复
没有报异常
控制台有输出System.out.println("wwwwwwwwww");
kf156 2010-12-03
  • 打赏
  • 举报
回复
有没报异常?控制台有输出System.out.println("wwwwwwwwww");这吗?
麦田捕手 2010-12-03
  • 打赏
  • 举报
回复
代码有点凌乱,不建议这样写。
一般的高/低级界面切换处理方法是写一个带形参的方法放在MIDlet类中,郭克华的j2me教学视频的17节案例3有个不错的demo,你看看
http://www.verycd.com/topics/2726420/
codeMoe 2010-12-02
  • 打赏
  • 举报
回复
FormBase 是公共属性类
codeMoe 2010-12-02
  • 打赏
  • 举报
回复

/** 加载 */
public void OnLoad() {

}

/** 卸载 */
public void OnUnLoad() {

}
codeMoe 2010-12-02
  • 打赏
  • 举报
回复
FormSearch2 是Canvas;


public void ShowForm(FormBase form) {
try {
// 先停止刷屏
FormBase old = m_ActiveForm;
if (m_ActiveForm != null)m_ActiveForm = null;

// 通知上个界面结束
if (old != null) {
old.OnUnLoad();
}

// 开始刷屏
// m_ActiveForm = form;
System.gc();
// 通知下个界面开始
// System.out.println("clear keys");
form.OnLoad();
// 开始刷屏
m_ActiveForm = form;
} catch (Exception ex) {
//GameLogger.info(ex.getMessage());
}
}
kf156 2010-12-02
  • 打赏
  • 举报
回复
FormSearch2 是Form还是Canvas?

mainCanvas.ShowForm方法贴下
codeMoe 2010-12-02
  • 打赏
  • 举报
回复
大虾,指点小弟啊
codeMoe 2010-12-02
  • 打赏
  • 举报
回复
static Form fe;
Command ok;
Command back;
TextField tf;
public static String temp = "";
public FormTest(){
fe = new Form("TEST");
ok = new Command("OK", Command.OK, 1);
back = new Command("BACK", Command.BACK, 1);

tf = new TextField("",temp,32,TextField.ANY);

fe.append(tf);

fe.addCommand(ok);
fe.addCommand(back);
fe.setCommandListener(this);
MainMidlet.display.setCurrent(fe);
}

public void commandAction(Command c, Displayable d) {

FormSearch2 fs = new FormSearch2();
if(c == back){
d = fs;
MainMidlet.display.setCurrent(d);
MainMidlet.mainCanvas.ShowForm(fs);
System.out.println("wwwwwwwwww");
}
if(c == ok){

}
}
kf156 2010-12-02
  • 打赏
  • 举报
回复
上代码
codeMoe 2010-12-02
  • 打赏
  • 举报
回复
清屏是怎么清法,能说具体点吗?
softice_ 2010-12-02
  • 打赏
  • 举报
回复
高级向低级转换时应先清屏

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧