【问题标题】:Custom dialog won't dispose when dispose is called调用 dispose 时自定义对话框不会释放
【发布时间】:2019-11-14 09:22:08
【问题描述】:

所以我对 Codename One 非常陌生,我正在尝试 Dialog 类。 当我创建对话框时,它会显示按钮和文本,但是当我想处理它时,它不会消失。 有什么建议吗?

private void createDialog(String title) {

    Dialog dialog = new Dialog(title);
    dialog.add("You ended the game.");
    dialog.add("Choose what to do");
    Button stay = new Button("Stay");
    Button newGame = new Button("New Game");
    Button menu = new Button("Menu");

    dialog.add(stay);
    dialog.add(menu);
    dialog.add(newGame);
    dialog.show();
    dialog.dispose();

     if(stay.isToggle()){
        //
     }

  }

我期待一个带有 3 个按钮和 2 个文本的对话框。 然后在我调用该方法时进行处理。 还有一个问题是 isToogle 是正确的调用方法,当我希望单击按钮时发生某些事情?

【问题讨论】:

    标签: java dialog codenameone


    【解决方案1】:

    您在show() 之后立即调用dispose() 方法,这是错误的,因为它会在显示对话框后立即处理它。

    另外,要向按钮添加点击事件,请调用addActionListener()

    private void createDialog(String title) {
    
        Dialog dialog = new Dialog(title);
        dialog.add("You ended the game.");
        dialog.add("Choose what to do");
        Button stay = new Button("Stay");
        Button newGame = new Button("New Game");
        Button menu = new Button("Menu");
    
        dialog.add(stay);
        dialog.add(menu);
        dialog.add(newGame);
        dialog.show();
    
        stay.addActionListener(evt -> {
             dialog.dispose();
        });
    }
    

    【讨论】:

    • 我试过这个方法,也一样,之间有一个 Thread.sleep 也没有用,知道吗?
    • 你不应该调用线程睡眠,因为这会阻塞 EDT。还要确保您连续调用此方法一次。如果您调用此方法两次,对话框将处理并返回上一个对话框。
    • @ShaiAlmog 你好 Shai 也没有工作...我目前正在使用 GUI Builder 中的媒体播放器,我怎样才能将视频从数据部分放在那里?
    • 什么是“数据部分”?
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多