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表示是单击

猜你喜欢

转载自www.cnblogs.com/jiading/p/12354000.html
今日推荐