JavaFx ComboBoxes ที่แก้ไขได้ทำงานได้ดี แต่ปุ่มลูกศรซ้ายถูกตีความว่าเป็น Shift-TAB
ดังที่คุณเห็นว่าโฟกัสถูกตั้งค่าเป็น ComboBox และจุดแทรกอยู่ตรงกลางของฟิลด์ การกดปุ่มลูกศรซ้ายจะย้ายโฟกัสไปที่ตัวควบคุมแรก ส่วน TextField ทางด้านซ้ายของรูปภาพเมื่อกดปุ่มลูกศรขวาจะย้ายการแทรกอักขระไปทางขวาหนึ่งตัวตามที่คาดไว้ เช่นเดียวกับใน TextField ใดๆ
ฉันจะตรวจจับเหตุการณ์เพื่อสร้างพฤติกรรมของ TextField ใน ComboBox ที่แก้ไขได้อย่างไร
ฉันพยายามติดตามเหตุการณ์สำคัญผ่านทาง 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();
}