【问题标题】:Disable beep when backspace is pressed in an empty JTextField在空的 JTextField 中按下退格键时禁用蜂鸣声
【发布时间】:2012-11-05 19:16:35
【问题描述】:

这里是初学者。有没有人知道在按下退格键且字段为空时让 JTextField 不发出哔哔声的快速简便的方法?我在网上看到了一些关于更改 DefaultEditorKit 的内容,但我无法理解。任何帮助将不胜感激。

【问题讨论】:

标签: java jtextfield backspace beep


【解决方案1】:

这段代码对我有用。

Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction);
beep.setEnabled(false);

【讨论】:

  • 不幸的是,这段代码具有阻止所有退格删除操作的副作用。
  • 但是你可以这样做:Action beep = textArea.getActionMap().get(DefaultEditorKit.deletePrevCharAction); textArea.getActionMap().put(DefaultEditorKit.deletePrevCharAction, new DelActionWrapper(textArea, beep));其中 DelActionWrapper 实现 Action,并在 textArea 为空时将调用委托给 beep 操作,但 actionPeform 除外。也许有更简单的方法
【解决方案2】:

我还没有机会尝试这个,但你也许可以禁用哔声动作。

JTextField field = new JTextField();
Action action;
a = field.getActionMap().get(DefaultEditorKit.beepAction);
a.setEnabled(false);

【讨论】:

    【解决方案3】:

    编辑:我稍后会提出另一个可能更容易做到的答案。我会先读那个。

    您可以尝试覆盖 JTextField 的 processKeyEvent 方法并检查 1.) 按下的键是否是退格键和 2.) JTextField 是否为空。如果其中任何一个为假,那么它应该表现正常。否则,您可以直接从该方法返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2020-03-09
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多