可編輯的JavaFx ComboBoxes工作正常,但左箭頭鍵被解釋爲Shift-TAB。JavaFx 2.2可編輯組合框左箭頭鍵
正如你所看到的焦點設置爲組合框,並且插入點是在該領域的中間。按下左箭頭鍵將焦點移動到第一個控件,當按下右箭頭鍵時,圖像左側的TextField將插入一個字符向右移動,就像在任何TextField中一樣。
如何捕獲事件以重現可編輯組合框中TextField的行爲?
我試圖通過ComboBox.setOnKeyPressed()和event.consume()來捕捉關鍵事件,但沒有成功。
下面是一個最小的方案,以重現此意外的行爲:
@Override
public void start(Stage stage) {
stage.setTitle("Editable ComboBox and left-arrow key");
ComboBox<String> cmbBx = new ComboBox<>();
cmbBx.getItems().addAll("A", "B", "C", "D", "E");
cmbBx.setMinWidth(150);
cmbBx.setEditable(true);
cmbBx.setOnKeyPressed(new EventHandler<KeyEvent>(){
@Override public void handle(KeyEvent event) {
System.err.println(event);
event.consume(); }}); // Consuming left arrow key is inoperant
GridPane grid = new GridPane();
grid.setVgap(4);
grid.setHgap(4);
grid.setPadding(new Insets(4, 4, 4, 4));
grid.add(new Label("TextField:"), 0, 0);
grid.add(new TextField() , 1, 0);
grid.add(new Label("ComboBox:") , 2, 0);
grid.add(cmbBx , 3, 0);
stage.setScene(new Scene(grid));
stage.show();
}
真的嗎?多奇怪的行爲......我得在這裏測試一下。 – ceklock