我想在用户点击JTextField
时显示“打开文件”对话框。当我添加以下代码(我现在删除)...
this.textField.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent event) {
// Show the Open File dialog box.
// Same as lines 86-93 in the link below.
}
public void focusLost(FocusEvent event) {
// Do nothing.
}
}
(代码here。)
...似乎在用户选择文件然后单击“确定”按钮后,将再次出现“打开文件”对话框,因为我认为焦点仍在JTextField
上。当用户点击“取消”按钮时,会发生同样的事情。
如何解决此问题?非常感谢您的建议!
答案 0 :(得分:2)
问题是当文件选择器对话框出现时,它会成为焦点。当它关闭时(我假设)你重新聚焦文本字段(或焦点管理器将焦点返回到它),这会再次触发焦点事件。
我可以想到两个解决方案。第一,如果您只想在用户“点击”字段时显示文件对话框,请改用鼠标监听器。
二,使用内部标志来监视当前的运行状态。考虑到事件处理的性质,这可能更难实现