gpt4 book ai didi

Java:JTextAreas后面的JPanel的MouseListener

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:46 26 4
gpt4 key购买 nike

我创建了一个组件,它基本上是一个完全被(不可编辑的)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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com