簡體   English   中英

JavaFX:當我按Enter鍵時,在表格視圖中啟用編輯列

[英]JavaFX: Enable edit column in a tableview when I press enter

我有一個帶有可編輯列的表格視圖,該列名為“ monto”,在單擊鼠標進行編輯時效果很好,但是當我按下“ enter”時,我需要啟用編輯功能。

 private TableView<Personal> myTable;
 private TableColumn<Personal,Double> columnaMonto;
 ... //Code when user edit with the mouse
         columnaMonto.setOnEditCommit(
            new EventHandler<TableColumn.CellEditEvent<Personal, Double>>() {
                @Override
                public void handle(TableColumn.CellEditEvent<Personal, Double> event) {
                    int pos = event.getTablePosition().getRow();
                    ((Personal)event.getTableView().getItems().get(
                            event.getTablePosition().getRow())
                    ).setImporte(event.getNewValue());

                    myTable.requestFocus();
                    myTable.getSelectionModel().select(pos + 1);
                    myTable.getFocusModel();
               }
           }
    );

這是我的嘗試:

    myTable.setOnKeyReleased(evt -> {
        if (evt.getCode() == KeyCode.ENTER) {
            System.out.println("Enter is OK!!");

           TablePosition focusedCellPosition = myTable.getFocusModel().getFocusedCell();
           System.out.println(focusedCellPosition.getRow());
           myTable.requestFocus();
           myTable.edit(focusedCellPosition.getRow(), columnaMonto);
        }
   });

問題是總是選擇編輯(例如雙擊),並且只有在用戶按Enter時才需要它。 另一個問題是滾動條無法正常工作在同一位置。 示例圖

感謝和抱歉對我來說很難用英語解釋。

myTable.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {

            if( event.getCode() == KeyCode.ENTER) {
                return;
        }

            // switch to edit mode on keypress, but only if we aren't already in edit mode
            if( myTable.getEditingCell() == null) {
                if( event.getCode().isLetterKey() || event.getCode().isDigitKey()) {

                    TablePosition focusedCellPosition = myTable.getFocusModel().getFocusedCell();
                    myTable.edit(focusedCellPosition.getRow(), focusedCellPosition.getTableColumn());
                }
            }
        }
});

該代碼在按字母鍵或數字鍵時效果很好。 您的單元格將被編輯。 對於輸入鍵,您可以編寫條件或邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM