【问题标题】:How to make JTextFields clickable?如何使 JTextFields 可点击?
【发布时间】:2019-08-05 17:00:57
【问题描述】:

我在一年前发布了一个类似的问题,但它写得不是很好,我没有得到我可以使用的答案。现在我站在同样的问题面前。我有一个JPanel(我的内容窗格),其中实现了MouseListener

在我点击的每一个地方,我都会得到鼠标点击的确切坐标。除了我的JTextField 组件。当我点击这些时,MouseEvent 甚至没有被触发。 H

我该怎么做,所以我的鼠标点击也会调用鼠标事件?

已尝试:setEnable(false)setHighlighter(null)

【问题讨论】:

  • 一个 JTextField 添加了一个 MouseListener,因此您可以定位插入符号或选择文本,因此所有 MouseEvents 都由文本字段而不是面板处理。对于 JButton、JTable、JList 等其他组件也是如此。I posted a similar question a year ago, but it was not really well written - 这也好不到哪里去。您还没有回答“什么是 X/Y 问题”。 - 为什么你认为当有人点击 JTextField 时你需要知道?
  • 抱歉,我认为我修复了 X/Y 问题。我使用 JTextField 只是为了显示一些文本。就像显示图片的 JLabel 一样。用户无意与之交互。当用户点击 JTextField 时,我想打开一个菜单。

标签: java swing jtextfield


【解决方案1】:

抱歉,我认为我解决了 X/Y 问题。

X/Y 问题仅仅意味着您告诉我们您尝试的解决方案是什么,而没有告诉我们您的要求是什么。如果我们不知道您要做什么,我们无法建议其他方法。

我想打开一个菜单,

现在我们知道需求是什么了。

解决方案是将 MouseListener 添加到文本字段,而不是面板。如果面板和文本字段的弹出窗口相同,那么您仍然需要将侦听器添加到面板和文本字段。

您可以通过以下两种方式之一执行此操作:

  1. 请阅读 Bringing up a Popup Menu 上的 Swing 教程中的部分以获取工作示例。

  2. 注意上面的教程有点老了,你也可以看看JComponent类的setComonentPopuMenu(...)方法。这种方法将为您创建侦听器。

【讨论】:

  • 对不起,我是新手。非常感谢你的帮助。以为我可能会添加另一个 MouseListener。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2016-02-13
  • 2014-09-12
  • 2015-02-07
  • 2014-11-16
  • 2013-09-20
  • 1970-01-01
相关资源
最近更新 更多