[Java] JavaFx 中 重写 TableView 的 MenuButton →→→→→进入此内容的聊天室

来自 , 2020-01-13, 写在 Java, 查看 106 次.
URL http://www.code666.cn/view/208e43f0
  1. public class TableViewTest extends Application {
  2.  
  3.         /**
  4.          * @description
  5.          * @author jie_peng
  6.          * @create 2013-11-6 下午2:28:20
  7.          */
  8.         public static void main(String[] args) {
  9.                 launch(args);
  10.         }
  11.  
  12.         @Override
  13.         public void start(Stage paramStage) throws Exception {
  14.                 final ObservableList<Person> data = FXCollections.observableArrayList(
  15.                                 new Person(1, "张三", 23), new Person(2, "李四", 24), new Person(3,
  16.                                                 "王五", 56));
  17.                 final TableView<Person> tableView = new TableView<Person>();
  18.                 tableView.setTableMenuButtonVisible(true);
  19.                 TableColumn<Person, Integer> idColumn = new TableColumn<Person, Integer>(
  20.                                 "id");
  21.                 idColumn.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
  22.                                 "num"));
  23.  
  24.                 CheckMenuItem showHideidCol = new CheckMenuItem("id");
  25.                 showHideidCol.selectedProperty().bindBidirectional(
  26.                                 idColumn.visibleProperty());
  27.                 TableColumn<Person, String> nameColumn = new TableColumn<Person, String>(
  28.                                 "名字");
  29.  
  30.                 nameColumn
  31.                                 .setCellValueFactory(new PropertyValueFactory<Person, String>(
  32.                                                 "name"));
  33.                 CheckMenuItem showHideNameCol = new CheckMenuItem("name");
  34.                 showHideNameCol.selectedProperty().bindBidirectional(
  35.                                 nameColumn.visibleProperty());
  36.  
  37.                 TableColumn<Person, Integer> ageColumn = new TableColumn<Person, Integer>(
  38.                                 "年龄");
  39.                 ageColumn
  40.                                 .setCellValueFactory(new PropertyValueFactory<Person, Integer>(
  41.                                                 "age"));
  42.  
  43.                 CheckMenuItem showHideAgeCol = new CheckMenuItem("age");
  44.                 showHideAgeCol.selectedProperty().bindBidirectional(
  45.                                 ageColumn.visibleProperty());
  46.  
  47.                 tableView.getColumns().addAll(idColumn, nameColumn, ageColumn);
  48.                 tableView.setItems(data);
  49.                 BorderPane root = new BorderPane();
  50.                 ScrollPane scroller = new ScrollPane();
  51.                 scroller.setContent(tableView);
  52.                 root.setCenter(scroller);
  53.                 Scene scene = new Scene(root, 500, 250);
  54.  
  55.                 paramStage.setScene(scene);
  56.                 paramStage.centerOnScreen();
  57.                 paramStage.show();
  58.  
  59.                 final ContextMenu menu = new ContextMenu();
  60.                 menu.getItems().addAll(showHideNameCol, showHideAgeCol);
  61.                 final Node showHideColumnsButton = tableView
  62.                                 .lookup(".show-hide-columns-button");
  63.                 EventHandler<MouseEvent> mousePressedHandler = new EventHandler<MouseEvent>() {
  64.                         @Override
  65.                         public void handle(MouseEvent event) {
  66.                                 if (menu.isShowing()) {
  67.                                         menu.hide();
  68.                                 } else {
  69.                                         menu.show(showHideColumnsButton, Side.BOTTOM, 0, 0);
  70.                                 }
  71.                                 event.consume();
  72.                         }
  73.                 };
  74.                 showHideColumnsButton.addEventFilter(MouseEvent.MOUSE_PRESSED,
  75.                                 mousePressedHandler);
  76.         }
  77.  
  78.         public static class Person {
  79.  
  80.                 private final SimpleIntegerProperty num;
  81.                 private final SimpleStringProperty name;
  82.                 private final SimpleIntegerProperty age;
  83.  
  84.                 private Person(int id, String name, int age) {
  85.                         this.name = new SimpleStringProperty(name);
  86.                         this.age = new SimpleIntegerProperty(age);
  87.                         this.num = new SimpleIntegerProperty(id);
  88.                 }
  89.  
  90.                 public Integer getNum() {
  91.                         return num.getValue();
  92.                 }
  93.  
  94.                 public String getName() {
  95.                         return name.get();
  96.                 }
  97.  
  98.                 public Integer getAge() {
  99.                         return age.getValue();
  100.                 }
  101.  
  102.         }
  103. }
  104. //源代码片段来自云代码http://yuncode.net
  105.                        

回复 "JavaFx 中 重写 TableView 的 MenuButton"

这儿你可以回复上面这条便签

captcha