You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Picker选中日期、传递至下类并实现Done按钮关闭对话框?

问题解决:Picker取值与对话框关闭问题

你的代码存在两个核心问题:

  • 在对话框弹出之前就获取了Picker的值,此时用户还未进行任何选择,拿到的只是初始化的默认日期,并非用户最终选择的结果。
  • 未给Picker绑定Done按钮的触发逻辑,导致点击Done后既不会关闭对话框,也不会更新选中的值。

以下是修正后的代码:

if (nplans == null) {
    Dialog dlg = new Dialog("");
    Picker datePicker = new Picker();
    datePicker.setUseLightweightPopup(true);
    datePicker.setDate(new Date()); // 设置初始显示日期
    dlg.setLayout(new BorderLayout());
    dlg.addComponent(CENTER, datePicker);

    // 给Picker添加Done按钮的回调监听
    datePicker.addActionListener(e -> {
        if(e.getCommand().equals("Done")){
            // 用户点击Done后,获取选中的日期
            selectedDate = datePicker.getValue().toString();
            // 关闭对话框
            dlg.dispose();
            // 展示选中的日期结果
            Dialog.show("Selected Date", selectedDate, "OK", null);
        }
    });

    dlg.setDisposeWhenPointerOutOfBounds(true);
    dlg.showPacked(CENTER, true);
} else {
    new Plan();
}
} catch(IOException err) {
    Log.e(err);
}

关键修改说明:

  • 将获取selectedDate的逻辑移至Picker的ActionListener内部,仅在用户点击Done按钮时执行,确保拿到的是用户选择后的真实值。
  • 在回调中调用dlg.dispose(),实现点击Done后关闭对话框的需求。
  • 删除了原代码中提前执行的取值和弹窗逻辑,避免获取到无效的默认值。

内容的提问来源于stack exchange,提问作者curtjacobs1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:12:14