我想在用户单击 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
上。当用户单击“取消”按钮时,也会发生同样的情况。
如何解决这个问题?我们将非常感谢您的建议!
最佳答案
问题是当文件选择器对话框出现时,它会获得焦点。当它关闭时(我假设),您重新聚焦文本字段(或者焦点管理器将焦点返回到它),这会再次触发焦点事件。
我可以想到两种解决方案。一,如果您只想在用户“单击”该字段时显示文件对话框,请改用鼠标监听器。
二,使用内部标志来监视当前的操作状态。考虑到事件处理的性质,这可能更难以实现
关于java - 当用户单击 JTextField 时如何显示“打开文件”对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598266/