public class TableViewTest extends Application {
/**
* @description
* @author jie_peng
* @create 2013-11-6 下午2:28:20
*/
public static void main
(String[] args
) {
launch(args);
}
@Override
public void start
(Stage paramStage
) throws Exception {
final ObservableList<Person> data = FXCollections.observableArrayList(
new Person(1, "张三", 23), new Person(2, "李四", 24), new Person(3,
"王五", 56));
final TableView<Person> tableView = new TableView<Person>();
tableView.setTableMenuButtonVisible(true);
TableColumn<Person, Integer> idColumn = new TableColumn<Person, Integer>(
"id");
idColumn.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
"num"));
CheckMenuItem showHideidCol = new CheckMenuItem("id");
showHideidCol.selectedProperty().bindBidirectional(
idColumn.visibleProperty());
TableColumn<Person, String> nameColumn = new TableColumn<Person, String>(
"名字");
nameColumn
.setCellValueFactory(new PropertyValueFactory<Person, String>(
"name"));
CheckMenuItem showHideNameCol = new CheckMenuItem("name");
showHideNameCol.selectedProperty().bindBidirectional(
nameColumn.visibleProperty());
TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>(
"年龄");
ageColumn
.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
"age"));
CheckMenuItem showHideAgeCol = new CheckMenuItem("age");
showHideAgeCol.selectedProperty().bindBidirectional(
ageColumn.visibleProperty());
tableView.getColumns().addAll(idColumn, nameColumn, ageColumn);
tableView.setItems(data);
BorderPane root = new BorderPane();
scroller.setContent(tableView);
root.setCenter(scroller);
Scene scene = new Scene(root, 500, 250);
paramStage.setScene(scene);
paramStage.centerOnScreen();
paramStage.show();
final ContextMenu menu = new ContextMenu();
menu.getItems().addAll(showHideNameCol, showHideAgeCol);
final Node showHideColumnsButton = tableView
.lookup(".show-hide-columns-button");
EventHandler<MouseEvent> mousePressedHandler = new EventHandler<MouseEvent>() {
@Override
if (menu.isShowing()) {
menu.hide();
} else {
menu.show(showHideColumnsButton, Side.BOTTOM, 0, 0);
}
event.consume();
}
};
showHideColumnsButton.
addEventFilter(MouseEvent.
MOUSE_PRESSED,
mousePressedHandler);
}
public static class Person {
private final SimpleIntegerProperty num;
private final SimpleStringProperty name;
private final SimpleIntegerProperty age;
private Person
(int id,
String name,
int age
) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleIntegerProperty(age);
this.num = new SimpleIntegerProperty(id);
}
return num.getValue();
}
return name.get();
}
return age.getValue();
}
}
}
//源代码片段来自云代码http://yuncode.net