JavaFX它ListView使用
ListView它是通过同一控制非。在JavaFX在。ListView此外,它拥有非常丰富的功能。下列。让我们来看看如何使用ListView。
ListView位于javafx.scene.control包中。该包是包括javafx中的全部UI控件。
继承结构例如以下:
1.ListView的基础使用方法
ObservableList<String> strList = FXCollections.observableArrayList("红色","黄色","绿色");
ListView<String> listView = new ListView<>(strList);
listView.setItems(strList);
listView.setPrefSize(400, 200);
root.getChildren().add(listView);
我们首先通过FXCollections来创建我们ListView须要的数据填充。
通过setItems能够给ListView填充数据。同一时候设置ListView当前的大小。
显示效果例如以下:
2.ListView的选择事件
有时候,当我们点击ListView的Item的时候。我们进行对应的事件处理。
当然。ListView的事件相同是通过属性绑定机制来实现的,详情请见我的另外一篇文章:浅谈JavaFX事件机制
以下是代码:
Label label = new Label("...");
label.textProperty().bind(listView.getSelectionModel().selectedItemProperty());
label.setLayoutY(200);
root.getChildren().add(label);
这里仅仅是简单的将label的text属性绑定到listview的选择属性上面,当listview的选择改变时,label的文本跟着一起改变。
效果图:
相同的。我们能够对ListView的选择属性,加入改变事件,例如以下:
Label label = new Label("...");
label.setLayoutY(200);
root.getChildren().add(label);
listView.getSelectionModel().selectedItemProperty().addListener(
(ObservableValue<? extends String> observable, String oldValue, String newValue) ->{
label.setText(newValue);
});
能够达到相同的效果。
这里使用了lambda表达式(后面事实上是new ChangeListener来监听属性的改变)。没实用JDK 8的朋友们去下载吧。
3.ListView的编辑
同TableView里面Item能够编辑一样,ListView也提供这种功能。
仅仅只是,我们须要改变ListView的CellFactory。
在上述演示样例中,我们仅仅须要加入例如以下代码:
listView.setCellFactory(TextFieldListCell.forListView());
listView.setEditable(true);
我们将ListView的CellFactory设置为TextFieldListCell,来提供编辑功能。
在JavaFX中。提供了非常多默认能够使用的Cell。大家能够自己去看文档javafx.scene.control.cell包中。我就不一一列出来了。
效果图例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
双击某个Item,就会进入编辑状态,按回车,编辑就完毕。同一时候,选择属性也会改变。
假设你希望自己来控制ListView Item编辑的相关操作,这里也有三个事件:
setOnEditStart 编辑開始
setOnEditCommit 编辑完毕
setOnEditCancel
编辑取消
这些事件会在你进行编辑的时候运行。有需求能够在这三个事件中做对应的处理。
4.ListView的自己定义Item
无论怎么说。官方提供的ListView Cell不一定能满足我们的需求。我们一般会自己定义ListCell来实现自己想要的效果。
这样,我们须要继承ListCell来实现自己的Cell。
代码例如以下所看到的:
//ListView的自己定义
ObservableList<String> strList = FXCollections.observableArrayList("red","blue","gold");
ListView<String> listView = new ListView<>(strList);
listView.setItems(strList);
listView.setPrefSize(400, 200);
listView.setCellFactory((ListView<String> l) -> new ColorCell());
listView.setEditable(true);
root.getChildren().add(listView); Label label = new Label("...");
label.textProperty().bind(listView.getSelectionModel().selectedItemProperty());
label.setLayoutY(200);
root.getChildren().add(label);
class ColorCell extends ListCell<String> {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
Rectangle rect = new Rectangle(100, 20);
if (item != null) {
rect.setFill(Color.web(item));
setGraphic(rect);
} else {
setGraphic(null);
}
}
}
我们通过继承ListCell,实现UpdateItem方法,来自己定义每一个Cell的内容。
效果图例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
ListView的使用解说就到这里了。
基本上能用的到内容也都在这里了。下一节课再见。
本文章为个人原创,转载请注明出处:http://blog.csdn.net/wingfourever,本人的个人博客:http://www.wjfxgame.com
-----------------------------------------------------------------------------------------------------------
有一段时间没有写博客了,也不知为何。总有点疲惫的样子。尽管公司体检。并无什么问题。
看来。也可能是IT行业的通病,工作三年来。从每天精神抖擞,充满激情,到略有疲惫。激情褪去。有人说的那啥,时间是一把XX刀。
个人站点之前用的WordPress,可是实在太不适合写代码了,常常更换主题。导致代码插件不兼容,显示效果各种坑爹。又是折腾插件,又是折腾这折腾那的。表示累了。
一横心把wordpress数据库备份了下。就清空换Z-Blog了。
尽管我也是IT行业。但只不过想写点教程,写点文字,而不想继续花这么多时间折腾在这些无意义的事情上。
近期用Unity3D做了个文字游戏的模版。写脚本就能够完毕游戏了。
只是没有时间写剧本。
以下是截图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
因为仅仅是測试用的脚本,所以文字信息能够忽略。。
另外,近期在用JavaFX做一个游戏地图编辑器,准备用在Unity3D开发2D的RPG或者策略类游戏。
大家假设感兴趣的话,也能够在完毕这个地图编辑器后开源。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
详细工作计划将会在个人博客中介绍。感谢支持。
---------------------------------------------------------------------------------------------------------------------------------------------------------
版权声明:本文博客原创文章,博客,未经同意,不得转载。
JavaFX它ListView使用的更多相关文章
- 问题记录:JavaFx 鼠标滑轮滚动事件监听!
问题描述: 在listview的item里面添加鼠标拖拽排序功能.代码如下: setOnMouseDragged(event -> { //设定鼠标长按0.3秒后才可拖拽 防止误操作 isCan ...
- javafx之CSS初探
文档:http://www.haogongju.net/art/1807238 javafx中的css元素必须有-fx-前缀. 一.介绍 java8中新增了javafx.css开放了css相关api. ...
- ListCell Animation in ListView
After a long time I am back again with new stuffs. I have seen that JavaFX has got so many demand no ...
- JavaFX2: 鼠标拖动选择和Ctrl+Shift连续区间选择的ListView
JavaFX2的ListView中的多选没有提供鼠标拖动选择的功能,同时按下Ctrl和Shift后连续的区间选中也不支持,以下代码用于处理这两个问题,细节见代码注释: import com.sun.j ...
- JavaFX的扩展控件库ControlsFX介绍
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- 【javaFX学习】(二) 面板手册--1
找了好几个资料,没找到自己想要的,自己写个列表吧,方便以后用的时候挑选,边学边记.以学习笔记为主,所以会写的会偏个人记忆性.非教程,有什么问题一起讨论啊. 各个不同的控件放入不同的面板中有不同的效果, ...
- 【javaFX学习】(二) 控件手册
这里写的控件可能不是所有的控件,但是应该是比较齐全并足够用的了,后面还有图表类的,3d模型类,放在后面来写吧,太多了.javafx的功能比以前想象中的要强大.而且也很方便,所有的控件写完后再用Scen ...
- 利用JavaFx开发RIA桌面应用-在线资料
转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/52805751 1.前言 虽说java已经不是主流的桌面应 ...
- JavaFX 的 UI 控件集 ControlsFX
出处:http://www.oschina.net/p/controlsfx JavaFX 的 UI 控件集 ControlsFX ControlsFX 开源项目旨在为 JavaFX 开发提供更多的 ...
随机推荐
- 给一个非常长的字符串str 另一个字符集比方{a,b,c} 找出str 里包括{a,b,c}的最短子串。要求O(n)
给一个非常长的字符串str 另一个字符集比方{a,b,c} 找出str 里包括{a,b,c}的最短子串.要求O(n). 比方,字符集是a,b,c,字符串是abdcaabcx,则最短子串为abc. 设置 ...
- 百度地图API相关点
百度API接口:http://developer.baidu.com/map/jsdemo.htm#a1_1 百度地图API具体解释之地图标注:http://www.cnblogs.com/jz110 ...
- 【iOS】文件下载小记
下载文件到NSURLConnection与NSURLSession两种,一种有恨悠久的历史了. 使用相对麻烦,后者是新出来的,添加了一些额外的功能. 一.NSURLConnection实现下载 TIP ...
- 【剑指offer】旋转数组的最小值
採用二分查找的策略,重点要考虑一些边界情况:旋转了0元素.即输入的是一个升序排列的数组.仅仅包括一个数字的数组.有非常多反复数字的数组等. AC代码: #include<stdio.h> ...
- 【转向Javascript系列】深入理解Generators
随着Javascript语言的发展,ES6规范为我们带来了许多新的内容,其中生成器Generators是一项重要的特性.利用这一特性,我们可以简化迭代器的创建,更加令人兴奋的,是Generators允 ...
- Learning Cocos2d-x for WP8(5)——详解Menu菜单
原文:Learning Cocos2d-x for WP8(5)--详解Menu菜单 C#(wp7)兄弟篇Learning Cocos2d-x for XNA(5)——详解Menu菜单 菜单是游戏必不 ...
- •当对自己的技术足够自信的时候,拼的就是RP和面试技巧了(转)
前言 三月真是一个忙碌的季节,刚刚开学就需要准备各种面试和笔试(鄙视).幸运的是,在长达一个月的面试内推季之后,终于同时拿到了阿里和腾讯的offer,还是挺开心的.突而想起久未更新的博客,就冒昧学一学 ...
- 讨论asp.net通过机器cookie仿百度(google)实现搜索input搜索提示弹出框自己主动
为实现自己主动弹出通过用户输入关键词相关的搜索结果,在这里,我举两个解决方案,对于两个不同的方案. 常用的方法是建立一个用户数据库中查找关系表.然后输入用户搜索框keyword异步调用数据表中的相关数 ...
- linux下多进程的调试
linux下多进程的调试: (1)follow-fork-mode set follow-fork-mode [parent | child] ---- fork之后选择调试父进 ...
- Dreamer 3.0 支持json、xml、文件上传
自己写的框架,功能类似Struts2.x 下载地址:http://pan.baidu.com/share/link?shareid=3273223286&uk=470382596 新增功能: ...