- 浏览: 197041 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
kongyumi:
电话18800163600
初学certificate -
kongyumi:
解压密码多少?求告知
初学certificate -
船到桥头自然沉:
初学certificate -
笑海人胜:
...
JavaFX学习之Preloader -
kanjiantaiyang:
引用[img][/img][url][/url][b][/b] ...
security
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()方法。
arg0.getValue()等于这里的person。若是你observableList.add(list),则这arg0.getValue()等于list。
SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
这里的意思既是arg0.getValue()既是你observableList.add的值,“sd”为bean取得名字,arg0.getValue().getFirstName()既是你该列想要获得的值。如果是list则arg0.getValue().get(j)则为该列的每行赋值了。
cell里面不仅只存放文字,还可以存放其它Node:
和TreeCell使用一样,可以对cell里面弄重新构造。
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());有一些默认的构造,就不需要自己去new TableCell了。
TableColumn设置sort的3个方法
firstNameCol.setSortNode(new Text("a")); // 默认是表头上的小图标三角形,可以改变
firstNameCol.setSortable(true); // 设置可排序
firstNameCol.setSortType(SortType.DESCENDING);设置升降序
若要在一个column中包含多个column,则可以调用TableColumn的getColumns().setAll(TableColumn...);
table的单元之间有明显的横线分割,可以通过css去掉。
去掉行横线
若想同时去掉没有数据的竖线
若想对行进行操作,可以通过setRowFactory。如下面对行的双击进行操作
往table中插入数据,table中的数据显示,是根据你的itemlist来的,list里面的数据排什么序,那table也就排什么序。若添加一条新数据,直接往list里面加。而list又提供按位置加,那么table显示就是按位置加了。
newRecord一个新的对象,没赋值。
自定义TableCell一般都是重写updateItem方法。如果有需要在编辑做操作,可以重写startEdit,cancelEdit
可以看到,一旦点击编辑状态,则改变Cell里面的内容。一离开编辑就换成原本cell里面的内容。这样就可以显示的时候就是字符串,而编辑的时候就可以弄一个控件,如日历。
获取选中的TableColumn
table自带方法可以过滤column,也就是只显示哪些column
设置为true后,会出现一个加号的column,它可以对column进行过滤
table默认是只能选着一行的,如果想选着多行,设置SelectionMode,此时可以对选中的多个进行监听。
tableView.getSelectionModel()得到的是个抽象类SelectionModel,它有二个子类MultipleSelectionModel, SingleSelectionModel。它们主要处理选择事件,可以看它们的方法:
获取选中的item和索引。一个是获取其值,另一个是获取封装属性,用于bind变化。
这些方法都是操作选中。
MultipleSelectionModel则提供多选功能,并且提供多选的一些方法。
TableView.TableViewSelectionModel<S>是继承了MultipleSelectionModel,主要针对table的选中事件提供了一些方法。
这里有很多javafx的小游戏,一个高手写的
http://lustrezhang.gotoip4.com/fxgame/
这里有个javafx学习的中文网站,我把内容都丢那上面去了。
http://www.jfxee.com/
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()方法。
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()); // 这样你可以不建立值与对象的映射关系。 } });
arg0.getValue()等于这里的person。若是你observableList.add(list),则这arg0.getValue()等于list。
SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
这里的意思既是arg0.getValue()既是你observableList.add的值,“sd”为bean取得名字,arg0.getValue().getFirstName()既是你该列想要获得的值。如果是list则arg0.getValue().get(j)则为该列的每行赋值了。
cell里面不仅只存放文字,还可以存放其它Node:
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()); } } } });
和TreeCell使用一样,可以对cell里面弄重新构造。
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());有一些默认的构造,就不需要自己去new TableCell了。
TableColumn设置sort的3个方法
firstNameCol.setSortNode(new Text("a")); // 默认是表头上的小图标三角形,可以改变
firstNameCol.setSortable(true); // 设置可排序
firstNameCol.setSortType(SortType.DESCENDING);设置升降序
若要在一个column中包含多个column,则可以调用TableColumn的getColumns().setAll(TableColumn...);
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);
table的单元之间有明显的横线分割,可以通过css去掉。
去掉行横线
.table-view .table-row-cell { -fx-background-insets: 0; }
若想同时去掉没有数据的竖线
.table-row-cell:empty .table-cell { -fx-border-width: 0px; }
若想对行进行操作,可以通过setRowFactory。如下面对行的双击进行操作
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 } } }); } }
往table中插入数据,table中的数据显示,是根据你的itemlist来的,list里面的数据排什么序,那table也就排什么序。若添加一条新数据,直接往list里面加。而list又提供按位置加,那么table显示就是按位置加了。
tableView.getItems().add(selectedRow, newRecord);
newRecord一个新的对象,没赋值。
自定义TableCell一般都是重写updateItem方法。如果有需要在编辑做操作,可以重写startEdit,cancelEdit
@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); }
可以看到,一旦点击编辑状态,则改变Cell里面的内容。一离开编辑就换成原本cell里面的内容。这样就可以显示的时候就是字符串,而编辑的时候就可以弄一个控件,如日历。
获取选中的TableColumn
table.getSelectionModel().getSelectedCells().get(0).getTableColumn()
table自带方法可以过滤column,也就是只显示哪些column
table.setTableMenuButtonVisible(true);
设置为true后,会出现一个加号的column,它可以对column进行过滤
table默认是只能选着一行的,如果想选着多行,设置SelectionMode,此时可以对选中的多个进行监听。
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);
tableView.getSelectionModel()得到的是个抽象类SelectionModel,它有二个子类MultipleSelectionModel, SingleSelectionModel。它们主要处理选择事件,可以看它们的方法:
getSelectedIndex() getSelectedItem() selectedIndexProperty() selectedItemProperty()
获取选中的item和索引。一个是获取其值,另一个是获取封装属性,用于bind变化。
select(int index) select(T obj) selectFirst() selectLast() ... clearSelection() clearSelection(int index)
这些方法都是操作选中。
setSelectionMode(SelectionMode.MULTIPLE); selectIndices(int index, int... indices) selectRange(int start, int end)
MultipleSelectionModel则提供多选功能,并且提供多选的一些方法。
select(int row, TableColumn<S,?> column) selectAboveCell() selectBelowCell() selectLeftCell() selectRightCell() setCellSelectionEnabled(boolean value)
TableView.TableViewSelectionModel<S>是继承了MultipleSelectionModel,主要针对table的选中事件提供了一些方法。
这里有很多javafx的小游戏,一个高手写的
http://lustrezhang.gotoip4.com/fxgame/
这里有个javafx学习的中文网站,我把内容都丢那上面去了。
http://www.jfxee.com/
发表评论
-
JavaFX学习 EventFilter
2013-01-11 10:41 3626EventFilter可以让你在事件捕捉过程中处理一些东 ... -
JavaFX学习 事件Event
2013-01-04 13:54 0常用的时间一般分为鼠标事件和键盘输入事件,看一下这些事件 ... -
JavaFX学习 自定义控件
2013-01-04 14:19 7974Control,Skin,behavior 在java ... -
JavaFX学习 位置计算
2012-12-31 15:22 1212如何得到节点在window中的位置 Point2D p ... -
JavaFX学习之Image
2013-01-11 13:53 7275ImageView and Image ImageVi ... -
JavaFX学习之Concurrent
2012-12-13 16:48 0Service Task public class ... -
JavaFX学习之Geometry
2012-12-13 16:45 0BoundingBox Bounds Dim ... -
JavaFX学习之Canvas
2013-01-15 16:20 4209Canvas and GraphicsContext ... -
JavaFX学习之Input
2012-12-13 16:39 0InputEvent Clipboard and ... -
JavaFX学习之Media
2012-12-13 16:32 0javafx支持视频和音频的播放,可以看media包下的 ... -
JavaFX学习之Paint
2012-12-13 16:29 0Paint Color ImagePatte ... -
JavaFX学习之Chart
2013-01-15 16:01 9203Chart 分piechart 和XYChart 再看看 ... -
JavaFX学习之Transform
2013-01-15 19:11 5542Transform为Node提供仿射变换,如旋转,尺度变 ... -
JavaFX学习之Effect
2013-01-14 15:53 1790Effect 抽象类,所有特殊效果的父类。 Ble ... -
JavaFX学习之Animation
2012-12-13 16:02 0Animation AnimationTimer ... -
JavaFX学习之Stage
2012-12-13 15:55 0Window Stage 刚开始的Stage由平 ... -
JavaFX学习之Web
2013-01-12 16:06 12590PopupFeatures 处理新窗口 WebHi ... -
JavaFX学习之Scene
2012-12-13 15:49 0Node setManaged(boolean va ... -
JavaFX学习之Layout
2013-01-15 16:03 12621Region 继承parent,被 ... -
JavaFX学习之Control
2012-12-13 14:25 10562Control Control类控件通常由Control, ...
相关推荐
随机生成人员数据,使用javafx 中的TableView来创建一个表格,在表格中实现数据的增删查改。
javafx的资源是真的少,为了设置一个表格完全透明花了好多时间,修改表格的滚动条也废了不少力气,这个实例里面就包含了设置表格的完全透明,还有滚动条背景透明。
javafx 2.0 tableview 实例 在此例子中有完整的tableview的使用
本资源中详细的写出了tableview的使用方法!数据列的绑定等等!
JavaFX2.0 表格框 TableView
关于JavaFX TreeView数据库加载Node的实例,网上没有从数据库加载NODE的实例,昨天晚上本人刚好写了一段代码,现与网友分享 需要完整项目包的可联系本人QQ:68263177
JavaFX的一个demo,带checkbox的tableview,选中一行获取所选中行的数据。
JavaFX+Jfoenix 学习笔记谢列文章的TableView数据表格章节源码(包括之前几章的源码)
JavaFX_TableView_DemoJavaFX_TableView_Demo包括在表中添加按钮图片以及事件监听
利用tableView实现横向滚动,一句代码实现
主要介绍了JavaFX之TableView的使用,有需要的朋友可以参考一下
新手写的,不是很好
cell的高度可以根据控件的大小自动调整。
TableView修改表格行颜色,定制表格
javafx连接mysql数据库实现的一个简单的学生成绩管理系统。...其中实现了tableview组件查询显示成绩。内附有数据库建表示例,代码较为清晰,基本能够满足javafx课程大作业要求。欢迎大家交流参考学习。123
FxMarkdownEditor - 基于JavaFx的Markdown编辑器
很好的一段代码,倒置的tableView,希望可以帮到你
javafxtableviewjdbc Tableview 使用 Javafx 从 mysql 数据库填充数据从文本字段向数据库添加数据并重新加载 tableview。
主要为大家详细介绍了javafx tableview鼠标触发更新属性的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
禁止JavaFX的TableView的列拖拽。