-1
我正在開發,其中在某些時候用戶打開模式對話框中選擇一個區域在編輯器中編輯:的JDialog返回值太早
隨着「選擇區域點擊...「對話框暫時設置爲setVisible(false);
不可見。之後用戶可以用鼠標選擇一個區域。釋放鼠標按鈕後,對話框將重新打開,並且setVisible(true);
將在文本字段中顯示所選區域的信息。當用戶點擊「確定」時,對話框被丟棄並且信息應該返回給編輯器。
返回對話框值的代碼是
@Override
public Area handleDialog() {
setVisible(true); // Shows the dialog and blocks the parent window
return selectedArea;
}
我現在的問題是,值返回太早,當調用setVisible(false);
發生,而不是當用戶點擊「確定」。所以返回null
,因爲selectedArea
尚未分配。我認爲會發生這種情況,因爲暫時隱藏對話框將重置模式並再次解鎖父窗口。
有沒有可能阻止返回值,只有在點擊「確定」時才返回它?如果沒有,我想我可以重寫我的邏輯,並使用WindowListener
而不是繞過這個。
你確定你的對話框是模態嗎? – VGR
@VGR是的,它擴展了'JDialog',並且在構造函數中我調用'super(JOptionPane.getRootFrame(),true);' – QBrute