用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

JavaFx 中 重写 TableView 的 MenuButton

2015-04-12 作者: java源代码大全举报

[java]代码库

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();
		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<MouseEvent> mousePressedHandler = new EventHandler<MouseEvent>() {
			@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
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...