Java:JTextAreas后面的JPanel的MouseListener

标签 java swing jpanel jtextarea mouselistener

我创建了一个组件,它基本上是一个完全被(不可编辑的)JTextArea 覆盖的 JPanel。我希望每次单击 JPanel 区域时都会触发 MouseListener 。我确实想将监听器添加到 JPanel 一次,而不是向 JTextArea 添加 n 次。

有没有办法将JTextArea发送到后台,以便“通过”JTextArea单击JPanel

注意:对于 JLabel 来说,这不需要任何特殊的东西,JPanel 的监听器总是被触发,但我更喜欢 JTextArea ,因为换行符。

最佳答案

With JLabels this works without anything special, the JPanels Listener is always fired

这是因为默认情况下 JLabel 不包含 MouseListener,因此 MouseEvent 会沿父树向上传递,直到找到确实使用 MouseListener 的组件为止。

对于 JTextArea,MouseListener 会添加到文本区域,以便您可以定位插入符号并选择文本等。如果您不需要所有这些功能,您可以使用如下代码从每个文本区域中删除 MouseListener:

JTextArea textArea = new JTextArea(...);

MouseListener[] ml = (MouseListener[])textArea.getListeners(MouseListener.class);

for (int i = 0; i < ml.length; i++)
    textArea.removeMouseListener( ml[i] );

但是,由于您必须对每个文本区域执行此操作,因此我建议将 MouseListener 添加到每个文本区域会更容易。您可以与每个文本区域共享相同的 MouseListener。

关于Java:JTextAreas后面的JPanel的MouseListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265468/

相关文章:

java - tomcat中wtpwebapps和webapps文件夹的区别

java - 在 JavaDoc 中记录 setter/getter、属性和构造函数时,有没有办法避免文档重复?

java - 从 html 页面中提取元素的最佳方法?

java - 我想创建一条将 2 个 JTable 连接在一起的直线

java - JPanel 的 addMouseListener

java - 使用 getAnchorByText,但想要页面上 2 个链接中的第 2 个链接

swing - 在 clojure 中映射懒惰

java - 在 Java 中显示图像

java - 无法从SwingWorker类获取JProgressBar进行更新

Java 图形用户界面 : Display Area and 8 buttons