2014-04-10 4 views
1

내가 추가하려고 오전 FocusAdapterfocusGained() 방법은 발사되지 않은 JDateChooser 스윙 아이템 만에, 어느 탭 포커스 나 마우스 클릭 ...JDateChooser는 포커스 이벤트를받을 수 없습니다 왜

public static void main(String[] args) { 
    JPanel panel = new JPanel(new GridBagLayout()); 
    GridBagConstraints c = new GridBagConstraints(); 
    c.fill = GridBagConstraints.HORIZONTAL; 
    c.weightx = 1; 

    JTextField textField = new JTextField(); 
    panel.add(textField, c); 
    JDateChooser dateChooser = new JDateChooser(new Date()); 
    dateChooser.addFocusListener(new FocusAdapter() { 
     @Override 
     public void focusGained(FocusEvent evt) { 
      System.out.println(evt.getSource()); // This line never runs 
     } 
    }); 

    c.gridy = 1; 
    panel.add(dateChooser, c); 

    JFrame frame = new JFrame(); 
    frame.add(panel); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
을 통해

실망 스럽습니다 ... 나는 작은 것을 놓치고 있습니까? JavaDocs을 바탕으로

+0

그것은'JDateChooser' 포커스를받지 않습니다 있기 때문에 대한 편집기 역할을하는 UI 컴포넌트를 얻을 필요가 자사의 편집기 – MadProgrammer

+0

@MadProgrammer을한다, 받아 들일 수 있도록 대답해야합니다. – ryvantage

+0

처음 봐야 했어;) – MadProgrammer

답변

3

, 당신은 JDateChooser

JDateChooser dateChooser = new JDateChooser(new Date()); 
IDateEditor editor = dateChooser.getDateEditor(); 
JComponent comp = editor.getUiComponent(); 
comp.addFocusListener(...); 
+0

혼란스러워서, 나는 (코드를보고있다)'JDateChooser'에'FocusAdapter'를 직접 추가했는데 효과가 있었지만 기능을 복제합니다. 왜 한 프로그램에서 작동하지만 다른 프로그램에서는 작동하지 않는지 확신하지 못합니다 ... – ryvantage

+0

어느 쪽이든, 당신이 옳았는데, 다른 방법이 우연히 작동하더라도 이것이 올바른 방법입니다 ... – ryvantage