2013-04-21 2 views
0

Мне нужно будет активировать MouseListener в компоненте SwingX JXDatePicker, позволяя выполнять определенные действия, когда пользователь нажимает на компонент. К сожалению, событие никогда не запускается.Java Swing mouse прослушиватель не работает

Настоящего небольшой фрагмент кода, который воспроизводит проблему:

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 с основным комбо, см. учебник): вы не можете добавить слушателей низкого уровня к родительскому и expe ct, что он будет получать уведомления о событиях для детей. – kleopatra

+0

* «Java Swing mouse listenener ..» * Незначительная точка, но 'MouseListener' (как и большинство слушателей) - это чистый AWT. –

ответ

3

Чтобы добавить MouseListener для использования компонента в JXDatePicker's редактора:

dp.getEditor().addMouseListener(this); 

Update: Чтобы добавить ActionListener к открытым JButton вы можете использовать компонента:

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

Большое спасибо за быстрый ответ: это действительно работает, когда вы нажимаете на редактор, но, к сожалению, он не щелкает мышью по стрелке раскрывающегося списка рядом с ним (также часть компонента JXDatePicker) ... любые предложения? Большое спасибо – Tom

+0

См. Обновление ..... – Reimeus

+0

Thx, но, к сожалению, это не работает. Чтобы быть более конкретным: я ищу, чтобы добавить слушателя на компонент со стрелкой, которая открывает представление месяца (а не сам месяц). Любые другие предложения? Большое спасибо – Tom