Java 黑莓应用程序中的菜单项

Java 黑莓应用程序中的菜单项,java,blackberry,user-interface,thread-safety,Java,Blackberry,User Interface,Thread Safety,我在应用程序中使用了一些菜单项,我对覆盖的run方法有一个问题 private MenuItem menuItemUpdate = new MenuItem("Update", 0, 0) { public void run() { // Can I write GUI code here? } }; 如注释所述,我可以在这里编写GUI代码吗?我不能,对吗?因为我不在GUI线程上?当我有更改GUI的代码时,是否应该使用invokeLater方法?那么对话框呢,

我在应用程序中使用了一些菜单项,我对覆盖的run方法有一个问题

private MenuItem menuItemUpdate = new MenuItem("Update", 0, 0) {
    public void run() {
        // Can I write GUI code here?

    }
};
如注释所述,我可以在这里编写GUI代码吗?我不能,对吗?因为我不在GUI线程上?当我有更改GUI的代码时,是否应该使用invokeLater方法?那么对话框呢,它们是否也应该在invokeLater方法中调用呢


如果我创建了另一个线程,当用户选择菜单项时将调用该线程,那么是否有必要重写MenuItem的run方法?我可以在构造函数中启动该线程吗?并保持run方法未被重写?

您可以在那里编写UI代码,因为UI线程处理用户的操作,并调用菜单项代码。所有用户交互都由UI线程处理。

您可以在那里编写UI代码,因为UI线程处理用户的操作,并调用菜单项代码。所有用户交互都由UI线程处理。

是的,您可以-因为它在UI线程上,例如:

private MenuItem menuItemUpdate = new MenuItem("Update", 0, 0) {
    public void run() {
        Show.status("Huzzah!");
    }
};

这似乎是一条普遍的规则,即在获得非法状态异常之前,不要在周围添加任何锁定;-)

是的,您可以-因为它位于UI线程上,例如:

private MenuItem menuItemUpdate = new MenuItem("Update", 0, 0) {
    public void run() {
        Show.status("Huzzah!");
    }
};

这似乎是一条普遍的规则,即在获得非法状态异常之前,不要在周围添加任何锁定;-)

您还可以使用run方法来设计
Ui或Gui
pushScreen()
页面。您还可以使用run方法来设计
Ui或Gui
pushScreen()
页面。。。