2009-09-04 59 views
3

我有一個小程序,其中一個元素被拖放,當執行拖放操作時,我打開一個對話框(擴展Jframe),其中應該輸入一些文本。問題是,我想等待這個對話框被關閉(實際上按下OK按鈕,所以我可以從文本字段中讀出數據),而不是分析用戶輸入的內容,並基於該內容決定是否該丟棄被拒絕或被允許。java等待對話框關閉

public void drop(DropTargetDropEvent e) { 
     try{ 
      //popup 

      Popup p = new Popup(); 
      p.setParmeter("enter a new name: "); 
      p.setVisible(true); 

      //programm wont wait before the user has pressed ok in the popup 
      System.out.println("value: " + p.getValue()); 

      repaint(); 

     } else { 
      e.rejectDrop(); 
     } 
} 

我希望你明白了。彈出窗口是從JFrame擴展的對話框。問題是,p.getValue()在用戶按下ok按鈕之前執行。我試着用一個布爾變量和一個循環來檢查是否在彈出窗口中輸入了一些東西,但它不起作用,對話框被重播,但沒有textfield或ok按鈕,所以我唯一能做的就是殺死它。我對gui很新,所以我真的很感謝你的幫助。提前致謝。

回答

5

如果可能的話,你應該重新實現PopupJDialog而不是JFrame繼承,並調用JDialogsetModal(true)方法,這將阻止後續的代碼運行,直到對話框被駁回。

或者,請查看JOptionPane中的靜態便利方法,這樣在許多情況下無需實現您自己的定製對話框類。例如(來自JOptionPane API):

顯示與所述選項的信息面板是/否和消息 '選擇一個':

JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION); 
0

Java內置對話框支持。 Yon不想擴展JFrame。關於如何進行對話,請參閱tutorial