2009-09-04 69 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