2016-05-31 6 views
1

Я не могу одолжить внутри, если проверить keyTyped метод. Существует followiing часть кода:проверить на редактируемые jcombobox

здесь я инициализацию COMBOBOX:

private void initComponents() 
{ 
    this.cboDayModel = new DefaultComboBoxModel<ListItem>(); 
    this.cboDay = new JComboBox<ListItem>(this.cboDayModel); 
    this.cboDay.addItemListener(this); 
    this.cboDay.setName("cboDay"); 
    this.cboDay.setBackground(this.einAusClass.hPHB.btnColor); 
    this.cboDay.setEditable(true); 
    this.cboDay.getEditor().getEditorComponent().addKeyListener(this); 
    this.cboDay.getEditor().getEditorComponent().addFocusListener(this); 
    this.add(this.cboDay); 
} 

в этот момент я проверить, что было напечатано в:

@Override 
    public void keyTyped(KeyEvent e) 
    { 
    if (!(Character.isDigit(e.getKeyChar()))) 
    { 
     e.consume(); 
     return; 
    } 
    if (e.getSource() instanceof JComboBox) // <-------************* 
    { 
     System.out.println("zz2"); 
     this.cbo = (JComboBox<ListItem>) e.getSource(); 

     String str = ((JTextField) cbo.getEditor(). 
          getEditorComponent()).getText(); 
     int zahl = Integer.parseInt("0" + str); 
     System.out.println(str + "" + zahl); 
     if (this.cbo == cboDay) 
     { 
     if (zahl < 1 || zahl > 31) 
     { 
      e.consume(); 
      return; 
     } 
     } 
    } 
} 

В методе keyTyped я проверить

if (e.getSource() instanceof JComboBox) 

Почему он не входит внутрь этого заявления?

ответ

0

e.getSource() не возвращает object из JComboBox согласно https://docs.oracle.com/javase/7/docs/api/java/util/EventObject.html это метод декларации getSource(); public Object getSource() Это вернет object, на котором Event изначально произошло, так что вы должны фактически бросить e.getSource к объекту jcombobox Ex:

if(cboDay == (jcombobox)e.getSource()) 

вы можете достичь того же функциональность с помощью actioncommand Ex:

cboDay.setActionCommand("combo"); 

public void keyTyped(KeyEvent e) 
    String action = e.getActionCommand(); 
     if (action.equals("combo")) { 
     System.out.println("done!"); 
     } 
} 
Смежные вопросы