TableView表
TableColumn列 构建一个表主要有TableView,TableColumn,ObservableList,Bean。 添加列table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); ObservableList里面是存放的数据 table.setItems(observableList);添加数据 observableList里面一般是存放的Bean,列与Bean之间建立联系,从而获取值。 列与Bean之间建立联系: emailCol.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));通过cell值工厂建立与Bean的联系。它这里并不需要知道你是传了什么Bean,它只需要通过“email”反射成getEmail()方法去Bean里面获得值,所以Bean属性定义的名字不需要与它相同,只需要有getEmail()方法。Java代码
firstNameCol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Person, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<Person, String> arg0) {
// return new
// SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
// //bean, bean的名称,值
return new SimpleStringProperty(arg0.getValue().getFirstName());
// 这样你可以不建立值与对象的映射关系。
}
});
Java代码
firstNameCol.setCellFactory(new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
@Override
public TableCell<Person, String> call( // 单元格内容
TableColumn<Person, String> arg0) {
return new TableCell<Person, String>() { @Override
protected void updateItem(final String str,boolean arg1) {
super.updateItem(str, arg1);
if (arg1) { setText(null);
setGraphic(null);
else { setText(str);
setGraphic(new CheckBox());
}
}
}
});
Java代码
firstNameColumn = new TableColumn<Person, String>("First");
firstNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
// firstNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());
lastNameColumn = new TableColumn<Person, String>("Last");
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
// lastNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());
nameColumn = new TableColumn<Person, String>("Name");
nameColumn.getColumns().setAll(firstNameColumn, lastNameColumn);
Java代码
.table-view .table-row-cell {
-fx-background-insets: 0;
}
Java代码
.table-row-cell:empty .table-cell {
-fx-border-width: 0px;
}
Java代码
tableView.setRowFactory(new Callback<TableView<T>, TableRow<T>>() {
@Override
public TableRow<T> call(TableView<T> param) {
return new TableRowControl();
}
});
class TableRowControl extends TableRow<T> {
public TableRowControl() {
super();
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getButton().equals(MouseButton.PRIMARY)
&& event.getClickCount() == 2
&& TableRowControl.this.getIndex() < tableView.getItems().size()) {
//doSomething
}
}
});
}
}
Java代码
tableView.getItems().add(selectedRow, newRecord);
Java代码
@Override
public void startEdit() {
if (!this.getTableRow().isVisible()) {
return;
}
super.startEdit();
if (checkBox == null) {
createCheckBox();
}
setText(null);
setGraphic(checkBox);
}
@Override
public void cancelEdit() {
super.cancelEdit();
setText(getItem().toString());
setGraphic(null);
}
Java代码
table.getSelectionModel().getSelectedCells().get(0).getTableColumn()
Java代码
table.setTableMenuButtonVisible(true);
Java代码
ListChangeListener<Person> indicesListener = new ListChangeListener<Person>() {
@Override public void onChanged(Change<? extends Person> c) {
while (c.next()) {
selectionUpdated(c.getAddedSubList(), c.getRemoved());
}
}
};
tableView.getSelectionModel().getSelectedItems().addListener(indicesListener);
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
Java代码
getSelectedIndex()
getSelectedItem()
selectedIndexProperty()
selectedItemProperty()
Java代码
select(int index)
select(T obj)
selectFirst()
selectLast()
...
clearSelection()
clearSelection(int index)
Java代码
setSelectionMode(SelectionMode.MULTIPLE);
selectIndices(int index, int... indices)
selectRange(int start, int end)
Java代码
select(int row, TableColumn<S,?> column)
selectAboveCell()
selectBelowCell()
selectLeftCell()
selectRightCell()
setCellSelectionEnabled(boolean value)