我在 JTextField 中添加了一个 MouseMotionListener。但是当我过去jf.getMouseMotionListeners().length
知道注册了多少鼠标侦听器时,我得到了 3 个!!这给我带来了一些问题,因为我试图根据该长度添加一个侦听器。如果它为零,我添加,否则我不想添加侦听器。
下面是代码,我编写了代码来了解鼠标移动事件的长度。
public static void main(String args[]) {
JFrame fr = new JFrame();
final JTextPane jf = new JTextPane ();
jf.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent arg0) {
System.out.println(jf.getMouseListeners().length);
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
jf.setBounds(30,30,100,50);
fr.setSize(new Dimension(500, 500));
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setLayout(null);
fr.add(jf);
fr.setVisible(true);
}
为什么当我只添加一个监听器时长度为 3?
有没有更好的方法来检查组件上的侦听器是否已注册?
编辑
这就是我想要做的。
我应该能够将 JTextPane 拖动到窗口内的任何位置,并且我应该能够通过双击 JTextPane 来编辑它。
如果我在编辑时有一个拖动侦听器并且如果不想选择一个文本来设置它的样式,那么 JTextPane 会被拖动而不是从 JTextPane 中选择一个文本。
现在我想在我处于编辑模式时删除运动监听器,并在我不编辑时添加它。
所以这就是我试图删除它的原因,或者简单地说我需要禁用运动监听器。