我有一个小程序,其中一个元素被拖放,当执行删除时,我打开一个对话框(扩展Jframe),其中应输入一些文本.问题是,我想等待关闭此对话框(实际上是按下确定按钮以便我可以从文本字段中读出数据),而不是分析用户输入的内容并根据我将决定是否丢弃被拒绝或被允许.
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().我尝试使用布尔变量和循环来检查是否在弹出窗口中输入了某些内容但它不起作用,对话框显示但没有textfield或ok按钮,所以我唯一能做的就是杀掉它.我对gui很新,所以我非常感谢你的帮助.提前致谢.
如果可能的话,你应该重新实现Popup
从继承JDialog
代替JFrame
,并调用JDialog
的setModal(true)
方法,这将阻止后续的代码运行,直到对话框被驳回.
或者,查看静态便捷方法JOptionPane
,在许多情况下无需实现自己的定制对话框类.例如(来自JOptionPane
API):
显示一个信息面板,其中包含选项yes/no和消息'choose one':
JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION);