我正在开发一个编辑器,用户可以在某个时刻打开一个模态对话框,用于选择编辑器中的某个区域:
单击“选择区域...”后,对话框暂时设置为setVisible(false);
不可见。之后,用户可以使用鼠标选择区域。释放鼠标按钮后,对话框将以setVisible(true);
重新打开,所选区域的信息将显示在文本字段中。当用户单击“确定”时,对话框将被丢弃,并且信息应返回给编辑器。
返回Dialog值的代码是
@Override
public Area handleDialog() {
setVisible(true); // Shows the dialog and blocks the parent window
return selectedArea;
}
现在我的问题是,当setVisible(false);
的调用发生时,过早返回值,而不是当用户点击“确定”时。因此返回null
,因为此时尚未分配selectedArea
。我认为会发生这种情况,因为暂时隐藏对话框会重置模态并再次解锁父窗口。
是否有可能阻止返回值并仅在单击“确定”时返回?如果没有,我想我可以重写我的逻辑并使用{{1}}来绕过这个。
答案 0 :(得分:-1)
我还没弄清楚,但我遵循了另一条路线。我现在不再依赖于对话框本身的返回值,而是将DefaultListModel
(我原本想用数据填充)一直传递给对话框。在点击" Ok"后我直接填写它。
它并不漂亮,但它可以胜任。