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 data = FXCollections.observableArrayList( new Person(1, "张三", 23), new Person(2, "李四", 24), new Person(3, "王五", 56)); final TableView tableView = new TableView(); tableView.setTableMenuButtonVisible(true); TableColumn idColumn = new TableColumn( "id"); idColumn.setCellValueFactory(new PropertyValueFactory( "num")); CheckMenuItem showHideidCol = new CheckMenuItem("id"); showHideidCol.selectedProperty().bindBidirectional( idColumn.visibleProperty()); TableColumn nameColumn = new TableColumn( "名字"); nameColumn .setCellValueFactory(new PropertyValueFactory( "name")); CheckMenuItem showHideNameCol = new CheckMenuItem("name"); showHideNameCol.selectedProperty().bindBidirectional( nameColumn.visibleProperty()); TableColumn ageColumn = new TableColumn( "年龄"); ageColumn .setCellValueFactory(new PropertyValueFactory( "age")); CheckMenuItem showHideAgeCol = new CheckMenuItem("age"); showHideAgeCol.selectedProperty().bindBidirectional( ageColumn.visibleProperty()); tableView.getColumns().addAll(idColumn, nameColumn, ageColumn); tableView.setItems(data); BorderPane root = new BorderPane(); ScrollPane scroller = new ScrollPane(); 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 mousePressedHandler = new EventHandler() { @Override public void handle(MouseEvent event) { 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); } public Integer getNum() { return num.getValue(); } public String getName() { return name.get(); } public Integer getAge() { return age.getValue(); } } } //源代码片段来自云代码http://yuncode.net