【问题标题】:How to show the Open File dialog box when a user clicks on a JTextField?当用户单击 JTextField 时如何显示打开文件对话框?
【发布时间】:2012-07-20 20:19:24
【问题描述】:

我想在用户单击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 swing jtextfield mouse-listeners focuslistener


【解决方案1】:

问题是当文件选择器对话框出现时,它会获得焦点。当它关闭时(我假设),您重新聚焦文本字段(或焦点管理器将焦点返回给它),这会再次触发焦点事件。

我可以想到两种解决方案。一,如果您只想在用户“单击”字段时出现文件对话框,请改用鼠标侦听器。

二,使用内部标志来监控当前的操作状态。考虑到事件处理的性质,这可能更难实现

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2012-12-16
相关资源
最近更新 更多