JavaFX之TableView的使用(二)

2014-11-24 08:09:47 · 作者: · 浏览: 1
lueFactory(new PropertyValueFactory(fileName)); observableList.get(2).setCellValueFactory(new PropertyValueFactory(dlSpeed)); observableList.get(3).setCellValueFactory(new PropertyValueFactory(downloadSize)); observableList.get(4).setCellValueFactory(new PropertyValueFactory(progress)); observableList.get(4).setCellFactory(ProgressBarTableCell.forTableColumn()); observableList.get(5).setCellValueFactory(new PropertyValueFactory(dlPercent)); mDownloadTable.setItems(data);

我们通过TableView.getColumns来获取TableView的所有列。

CellValueFactory指的是TableView每一列里填充的数据。我们这里简单的使用PropertyValueFacotry。后面的要对应你DownloadData中的Property属性名。

CellFactory我们可以指定TableView中某一个Cell的视图类型。大家可以看到我用到了个ProgressBar。

另外CellFactory,JavaFX中自带部分的CellFactory,详细的大家可以在javafx.scene.control.cell包中找到。

接着我们通过创建DownloadData,设置数据,并添加到ObservableList中即可。

如下图所示:

\

上面是TableView的数据填充。

另外,JavaFX中的事件也不像Java或者Android里面用onItemClick之类的来执行某一项的点击。

JavaFX中的控件的很多事件有着鲜明的特色,就是使用Property的ChangeListener来执行。

如下:

  mMenuTree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
        mMenuTree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {

            @Override
            public void changed(Observableva lue ov, Object t, Object t1) {
                int index = mMenuTree.getSelectionModel().getSelectedIndex();
                switch (index) {
                    case 1:   //所有任务
                        refreshTableData(0, 1, 2);
                        break;
                    case 2:   //正在下载
                        refreshTableData(0);
                        break;
                    case 3:  //已完成
                        refreshTableData(2);
                        break;
                    case 4:  //垃圾箱
                        refreshTableData(-1);
                        break;
                }
            }
        });

这里是TreeView的事件,通过监听selectItemProperty的改变来做相应的操作,同理,TableView也是一样的通过监听selectXXXProperty属性来操作Item的点击等事件。