2013-04-21 111 views
0

我需要在SwingX JXDatePicker组件上具有活动的MouseListener,使我能够在用户单击组件时执行特定操作。 不幸的是,事件从未被触发。Java Swing鼠标侦听器无法正常工作

由此一小块的代码能重现问题:

public class TestDummy4 extends JFrame implements MouseListener{ 

    private static final long serialVersionUID = -2424758762078571430L; 

    public TestDummy4(){ 
     super(); 
     this.getContentPane().setLayout(new BorderLayout()); 

     //Adds date picker 
     JXDatePicker dp = new JXDatePicker(); 
     dp.getEditor().setEditable(false); 
     dp.getEditor().setHighlighter(null); 
     dp.addMouseListener(this); 

     this.getContentPane().add(dp); 
     this.pack(); 
     this.setVisible(true); 
    } 

    public static void main(String[] args) throws IOException { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       //Builds GUI 
       new TestDummy4(); 
      } 
     }); 

    } 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     System.out.println("Mouse clicked"); 
    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     System.out.println("Mouse pressed"); 
    } 
    @Override 
    public void mouseReleased(MouseEvent e) {} 
    @Override 
    public void mouseEntered(MouseEvent e) { 
     System.out.println("Mouse Entered"); 
    } 
    @Override 
    public void mouseExited(MouseEvent e) {} 
} 

有了这个代码,我已经输出的不是单行线在控制台上的JXDatePicker点击时。

任何帮助/提示将不胜感激! 托马斯

+0

同样的问题与所有复合组件(fi与核心组合,请参阅教程):您不能将低级侦听器添加到父级和经验ct它会得到事件通知给孩子 – kleopatra 2013-04-21 21:55:28

+0

*“Java Swing鼠标监听器..”*小点,但MouseListener(像大多数监听器)是纯AWT。 – 2013-04-22 01:09:44

回答

3

添加MouseListenerJXDatePicker's编辑器组件使用:

dp.getEditor().addMouseListener(this); 

更新: 要将ActionListener添加到组件的开放JButton你可以使用:

JButton openButton = (JButton) dp.getComponent(1); 
openButton.addActionListener(myActionListener); 
+0

非常感谢swift回复:单击编辑器时确实有效,但不幸的是,它不会捕获鼠标点击旁边的下拉箭头(也是JXDatePicker组件的一部分)......任何建议?非常感谢 – Tom 2013-04-21 20:25:23

+0

查看更新..... – Reimeus 2013-04-21 20:42:46

+0

Thx,但不幸的是这不起作用。更具体地说:我正在寻找使用打开月视图的箭头(而不是月视图本身)在组件上添加监听器。还有其他建议吗?非常感谢 – Tom 2013-04-21 20:47:51