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" >

双击某个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" >

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" >

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

因为仅仅是測试用的脚本,所以文字信息能够忽略。。

另外,近期在用JavaFX做一个游戏地图编辑器,准备用在Unity3D开发2D的RPG或者策略类游戏。

大家假设感兴趣的话,也能够在完毕这个地图编辑器后开源。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2luZ2ZvdXJldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

详细工作计划将会在个人博客中介绍。感谢支持。

---------------------------------------------------------------------------------------------------------------------------------------------------------

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-29 19:09:43

JavaFX它ListView使用的相关文章

JavaFX之ListView的使用

ListView是一个很常见的控件.在JavaFX中,ListView也拥有很丰富的功能.下面,我们来看看如何使用ListView. ListView位于javafx.scene.control包中,该包是包含javafx中的所有UI控件. 继承结构如下: 1.ListView的基础用法 ObservableList<String> strList = FXCollections.observableArrayList("红色","黄色","绿

javafx之CSS初探

javaFX 可以通过css来设计界面.javafx中的css只是w3c css2.1规范的一个扩展和子集,并不完全支持所有的css特性. javafx中的css元素必须有-fx-前缀. 一.介绍 java8中新增了javafx.css开放了css相关api. 选择器分类: Type选择器:通过Node的getTypeSelector可以获取 id选择器:通过设定id=属性(注意这里的id不是fx:id) styleClass属性: styleClass可以使用class选择器 选择器命名规范:

使用 JavaFX 2.0 布置用户界面

使用 JavaFX 2.0 布置用户界面 作者:James L. Weaver 学习使用 JavaFX 2.0 的布局功能使场景中的节点出现在希望它们出现的位置,等等. 2012 年 3 月发布 下载: :Java FX :NetBeans IDE :示例代码 (Zip) 简介 JavaFX 2.0 是一个用于创建富互联网应用程序 (RIA) 的 API 和运行时.JavaFX 于 2007 年推出,2011 年 10 月发布了 2.0 版本.JavaFX 2.0 的一个优点是可以使用成熟.熟悉

javafx css 魔法玩转

首先来看下javafx css是什么东西:官网的解释 JavaFX Cascading Style Sheets (CSS) is based on the W3C CSS version 2.1 [1] with some additions from current work on version 3 [2]. JavaFX CSS also has some extensions to CSS in support of specific JavaFX features. The goal

在JavaFX中使用布局

在JavaFX中使用布局 一.用内置布局窗格 一个JavaFx应用可以通过设置每个UI元素的位置和大小来手动地布局用户界面.但是,一个更简单的做法是使用布局窗格.JavaFx SDK提供了多种布局容器类,叫做窗格,它们可简化对一些经典布局的设置和管理,例如行.列.堆叠.平铺等等.当窗口缩放时,布局窗格会自动地根据节点属性重设其包含的所有节点的位置和大小. 本话题为JavaFx layout包中提供的的每个布局窗格都给出了相应的概述和简单的示例.LayoutSample.java文件包含了本话题中

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

IntelliJ IDEA创建JavaFX项目

点击File>New>Project,选中Java FX,Next,填写项目名称和路径,Finish 项目创建成功,目录如下,src下为项目源码,out目录下为编译结果. Main为项目主入口,sample.fxml为资源文件,可以看到main方法选择从sample.fxml加载窗口元素. Main.java和sample.fxml初始代码 public class Main extends Application { @Override public void start(Stage pri

C# 将Access中时间段条件查询的数据添加到ListView中

C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加Item. 首先,ListView的Item属性包括Items和SubItems.必须先实例化一个ListIteView对象.具体如下: ListViewItem listViewItem=new ListViewItem(); l

[ ObjectListView ] - ListView的增强控件 - 前言 (翻译)

********************************************************************************** 原  标 题: A Much Easier to Use ListView 原文地址: https://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView 翻       译: 于国栋 http://www.shannon.net.cn *********