如何从 LWUIT 组件中处理对话框

Posted

技术标签:

【中文标题】如何从 LWUIT 组件中处理对话框【英文标题】:How can I Dispose Dialog box From LWUIT Component 【发布时间】:2012-01-11 04:43:59 【问题描述】:

我正在使用 LWUIT(Midlet 移动应用程序)开发一个项目。当我按数字键时,将打开一个对话框。当我按下 #,0,* 键时,对话框应该关闭。 我正在使用Dialog.dispose() 方法关闭对话框。但它不起作用。下面是我的代码。谁能告诉我我的代码有什么问题?

public class javaForm extends Component implements ActionListener


Dialog d=new Dialog();


public void keyPressed(int key)

     System.out.println("Key pressed :"+key);

            switch(key)
            


                case 48:
                    d.show(130,20,30,30,true);
                    break;
                case 49:
            d.show(130,20,30,30,true);
                    break;
                case 50:
            d.show(130,20,30,30,true);
                    break;
                case 51:
             d.show(130,20,30,30,true);
                    break;
                case 52:
             d.show(130,20,30,30,true);
                    break;
                case 53:
            d.show(130,20,30,30,true);
                    break;
                case 54:
            d.show(130,20,30,30,true);
                    break;
                case 55:
             d.show(130,20,30,30,true);
                    break;
                case 57:
                    d.show(130,20,30,30,true);
                    break;
                case 56:
                     d.show(130,20,30,30,true);
                      break;
                case 42:
            d.dispose();
                        break;
                case 35:
                        d.dispose();
                        break;
                default:
                       d.dispose();
                       break;
            



public void actionPerformed(ActionEvent ae) 



 throw new UnsupportedOperationException("Not supported yet.");




实际上javaForm 是一个使用LWUIT 开发的java 程序,我在MIDLET 中调用这个javaForm,即javaForm1。我包括了所有必要的软件包。

【问题讨论】:

在提出新问题之前,您应该接受其他问题 您检查过这些键的键码吗? Already I told you 在机箱内使用 println 看看发生了什么。 是的@Bharath。我试过了,但不是 Works。我按了键 2,它显示 50。我再次按了 2,它没有打印任何东西 完全同意@frayab。您必须接受其他问题。如果您想得到答案,这一点很重要。 【参考方案1】:

你为什么不使用Form.addGamekeyListener()

gameKeyListener 放入Form(在Form 中扩展ActionListener)然后在actionPerformed(ActionEvent ae) 中使用ae.getKeyEvent 捕获密钥并关闭Dialog

使用Canvas 映射游戏键。例如:Canvas.FIRE

【讨论】:

@jmunoz.. GameKeyListener 下的键是什么。我想使用所有的移动键来显示 Dialog,以 Dispose Dialog.. 使用 addKeyListener 而不是游戏键监听器,就像 jmunoz 解释的那样。您还可以继承对话框并覆盖 keyReleased 回调。 为了什么? Form.addKeyListener() 就像游戏按键监听器。重写一个方法只是派生 LWUIT 的 Form 并声明 public void keyReleased(int keyCode) ...

以上是关于如何从 LWUIT 组件中处理对话框的主要内容,如果未能解决你的问题,请参考以下文章

如何处理后台线程上显示的 LWUIT 对话框

查找在 LWUIT 资源编辑器中定义的元素

从lwuit中的Dialog获取KeyCode

使用带有 BorderLayout.CENTRE 定位的 Dialog.showPacked() 时出现奇怪的 LWUIT 对话框行为

如何创建自定义组件并将其添加到基于对话框的应用程序 (MFC)?

如何从隐藏的窗口应用程序中显示对话框?