zoukankan      html  css  js  c++  java
  • 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包中。我就不一一列出来了。

      效果图例如以下:

      

      双击某个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的内容。

      效果图例如以下:

      


      ListView的使用解说就到这里了。

    基本上能用的到内容也都在这里了。下一节课再见。


      本文章为个人原创,转载请注明出处:http://blog.csdn.net/wingfourever,本人的个人博客:http://www.wjfxgame.com

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

      有一段时间没有写博客了,也不知为何。总有点疲惫的样子。尽管公司体检。并无什么问题。

    看来。也可能是IT行业的通病,工作三年来。从每天精神抖擞,充满激情,到略有疲惫。激情褪去。有人说的那啥,时间是一把XX刀。

      个人站点之前用的WordPress,可是实在太不适合写代码了,常常更换主题。导致代码插件不兼容,显示效果各种坑爹。又是折腾插件,又是折腾这折腾那的。表示累了。

    一横心把wordpress数据库备份了下。就清空换Z-Blog了。

    尽管我也是IT行业。但只不过想写点教程,写点文字,而不想继续花这么多时间折腾在这些无意义的事情上。

      近期用Unity3D做了个文字游戏的模版。写脚本就能够完毕游戏了。

    只是没有时间写剧本。敲打

      以下是截图:

      


      


      

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


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

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

      

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

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

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

  • 相关阅读:
    2020暑假牛客多校9 B
    2020暑假牛客多校10 C -Decrement on the Tree (边权转点权处理)
    HDU 5876 补图的最短路
    CSP初赛复习
    遗传算法
    排列组合
    和式 sigma的使用
    多项式的各种操作
    三分
    NOIP2018普及游记
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4735566.html
Copyright © 2011-2022 走看看