2013-07-27 111 views
0

我在使用JavaFX中的可編輯組合框。我連接的事件處理程序:如何從可編輯ComboBox上的文本中獲取事件?

ComboBox cb = new ComboBox(); 
cb.getEditor().setOnKeyTyped(...); 

而且這個工作正常,如果我從鍵盤打字。但是,如果我想要的東西就這樣的文字變化檢測事件:

cb.getEditor().setText(val); 

事件處理程序不火。我找不到任何方法來做到這一點。你有什麼提示?...謝謝。

回答

2

跟蹤textProperty代替:

cb.getEditor().textProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     System.out.println(oldValue + " --> " + newValue); 
    } 
}); 
0
private void EditeActionPerformed(java.awt.event.ActionEvent evt) 
{ 
    // TODO add your handling code here: 
    String btntitle=this.Edite.getText(); 
    if(btntitle.compareToIgnoreCase("edite")==0) { 
     int index=this.Table.getSelectedRow(); 
     this.txtProductId.setText(""+tm.getValueAt(index, 0)); 
     this.txtLastName.setText(""+tm.getValueAt(index, 1)); 
     this.txtFirstName.setText(""+tm.getValueAt(index, 2)); 
     this.txtTel.setText(""+tm.getValueAt(index, 3)); 
     this.jComboBoxGender.setSelectedIndex(tm.getValueAt(index, 4)); 
     this.Edite.setText("update"); 
    } 

    if(btntitle.compareToIgnoreCase("update")==0) { 
     int index=Table.getSelectedRow(); 
     int productid=Integer.parseInt(txtProductId.getText()); 
     String lastname=txtLastName.getText(); 
     String firstname=txtFirstName.getText(); 
     String sex=txtTel.getText(); 

     tm.setValueAt(productid,index, 0); 
     tm.setValueAt(lastname,index, 1); 
     tm.setValueAt(firstname,index, 2); 
     tm.setValueAt(sex,index, 3); 
     cleardata(); 
    } 
} 
+1

你能更好地格式化你的答案,給你做了什麼解釋? –

相關問題