我有一个小程序,其中一个元素被拖放,当执行删除时,我打开一个对话框(扩展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很新,所以我非常感谢你的帮助。提前致谢。
答案 0 :(得分:5)
如果可能,您应该重新实施Popup
以继承JDialog
而不是JFrame
,并调用JDialog
的{{1}}方法,这会阻止后续代码运行直到对话框被解除。
或者,查看JOptionPane
中的静态便捷方法,这样就无需在许多情况下实现自己的定制对话框类。例如(来自setModal(true)
API):
显示一个信息面板,其中包含选项yes / no和消息'choose one':
JOptionPane
答案 1 :(得分:0)
Java具有内置对话框支持。 Yon不想扩展JFrame。请参阅tutorial了解如何制作对话框。