javafx的tableview點擊功能


javafx的tableview可以比較方便地創建出外觀還行的列表,但是有一個常見的需求,就是用戶點擊table中的表項做選擇,但是編輯器沒辦法實現這個需求,需要我們自己寫控制器
假設表項對象叫Stream

    @FXML
    TableView<Stream> streamListTable;

然后在初始化的函數中:

streamListTable.setRowFactory(new Callback<TableView<Stream>, TableRow<Stream>>() {
            @Override
            public TableRow<Stream> call(TableView<Stream> param) {
                return new TableRowControl();
            }
        });

然后創建一個新的類:

class TableRowControl extends TableRow<Stream> {
        public TableRowControl() {
            super();
            this.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                    if (event.getButton().equals(MouseButton.PRIMARY)
                            && event.getClickCount() == 1
                            && TableRowControl.this.getIndex() < streamListTable.getItems().size()) {
                        choosedStream = TableRowControl.this.getItem();//獲取點擊的對象
                        choosedIndex=TableRowControl.this.getIndex();//獲取點擊的index,就是表上的第幾項
                    }
                }
            });
        }
    }

event.getClickCount() == 1表示是單擊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM