JavaFX如何获取ListView(列表视图)的选项

 更新时间:2024年01月02日 10:21:10   作者:闪光的回忆  
这篇文章主要介绍了JavaFX如何获取ListView(列表视图)的选项,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

我们使用下面的图片进行举例,点击左侧ListView选项,右侧label面板显示对应颜色。

如何获取用户的选择项?

图片示例

上代码

		/**
         * listView的事件处理添加
         */
        listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
            //s:改变前的值    t1:改变后的值
            @Override
            public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
                if ("AQUAMARINE".equals(t1)){
                    label.setStyle("-fx-background-color: AQUAMARINE" );
                }else if ("SPRINGGREEN".equals(t1)){
                    label.setStyle("-fx-background-color: SPRINGGREEN");
                }else if ("Tan".equals(t1)){
                    label.setStyle("-fx-background-color: Tan");
                }
            }
        });

其中“ ”中的字母为色彩代码,通过上面的代码即可为ListView添加事件处理

---------------------分界线---------------------

下面是完整代码

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.stage.Stage;
import javafx.util.Callback;

/**
 * 点击颜色块显示对应颜色的图形
 * @author C y c l e
 */
public class ListViewColorDemo extends Application {
    private BorderPane root = new BorderPane();
    private ListView<String> listView = new ListView<>(FXCollections.observableArrayList(
            "AQUAMARINE", "SPRINGGREEN", "Tan"
    ));
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Label label = new Label("色彩块");
        label.setPrefSize(200, 300);
        label.setStyle("-fx-background-color: #ffffff");
        VBox vBox = new VBox(5);
        vBox.setPrefSize(200, 300);
        vBox.getChildren().add(listView);
        root.setLeft(vBox);
        root.setRight(label);

        //将listView设置为单元工厂
        listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
            @Override
            public ListCell<String> call(ListView<String> stringListView) {
                //返回一个自定义的ListCell实现类对象
                return new ColorCell();
            }
        });
        /**
         * listView的事件处理添加
         */
        listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
            //s:改变前的值    t1:改变后的值
            @Override
            public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
                if ("AQUAMARINE".equals(t1)){
                    label.setStyle("-fx-background-color: AQUAMARINE" );
                }else if ("SPRINGGREEN".equals(t1)){
                    label.setStyle("-fx-background-color: SPRINGGREEN");
                }else if ("Tan".equals(t1)){
                    label.setStyle("-fx-background-color: Tan");

                }
            }
        });

        primaryStage.setScene(new Scene(root, 400, 300));
        primaryStage.show();
    }

    /**
     * 自定义一个带颜色的单元格
     */
    class ColorCell extends ListCell<String>{
        @Override
        protected void updateItem(String s, boolean b) {
            super.updateItem(s, b);
            Ellipse ellipse = new Ellipse(70, 10);
            //设置图形颜色
            if (!b){
                ellipse.setFill(Color.web(s));
                setGraphic(ellipse);
            }
        }
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java之使用POI教你玩转Excel导入与导出

    Java之使用POI教你玩转Excel导入与导出

    这篇文章主要介绍了Java之使用POI教你玩转Excel导入与导出,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • SpringBoot 集成 Jasypt 对数据库加密以及踩坑的记录分享

    SpringBoot 集成 Jasypt 对数据库加密以及踩坑的记录分享

    这篇文章主要介绍了SpringBoot 集成 Jasypt 对数据库加密以及踩坑,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 关于SpringCloud的微服务以及组件详解

    关于SpringCloud的微服务以及组件详解

    这篇文章主要介绍了关于SpringCloud的微服务以及组件详解,是一个更高层次的、 架构视角的综合性大型项目, 他的目标是构建一套标准化的微服务解决方案,需要的朋友可以参考下
    2023-05-05
  • 如何解决@value获取不到yaml数组的问题

    如何解决@value获取不到yaml数组的问题

    文章介绍了在使用YAML配置文件时,通过@Value注解获取整数和数组列表的配置方法,并提供了两种解决方案:一种适用于非嵌套列表,另一种适用于嵌套列表等复杂配置
    2024-11-11
  • Spring Batch批量处理数据实现方式

    Spring Batch批量处理数据实现方式

    SpringBatch是一个用于创建高效、健壮批量数据处理应用的框架,支持事务管理、并发处理、重试机制、跳过机制等特性,它由Spring框架的一部分,包括Job、Step、ItemReader、ItemProcessor、ItemWriter等核心组件,在SpringBoot项目中集成SpringBatch
    2025-12-12
  • Java代码读取properties配置文件的示例代码

    Java代码读取properties配置文件的示例代码

    这篇文章主要介绍了Java代码读取properties配置文件,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 基于Mybatis实现动态数据源切换的示例代码

    基于Mybatis实现动态数据源切换的示例代码

    在当今的互联网应用中,微服务大行其道,随着业务的发展和扩展,单一的数据库无法满足日益增长的数据需求,本文将基于 JDK17 + Spring Boot 3 和 MyBatis 框架实现动态切换数据源功能,需要的朋友可以参考下
    2024-09-09
  • Spring的事务控制实现方法

    Spring的事务控制实现方法

    这篇文章主要为大家详细介绍了Spring的事务控制实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • java多线程之停止线程的方法实例代码详解

    java多线程之停止线程的方法实例代码详解

    这篇文章主要介绍了java多线程之停止线程的方法实例代码详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • JavaWeb文件上传下载实例讲解(酷炫的文件上传技术)

    JavaWeb文件上传下载实例讲解(酷炫的文件上传技术)

    在Web应用系统开发中,文件上传功能是非常常用的功能,今天来主要讲讲JavaWeb中的文件上传功能的相关技术实现,本文给大家介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11

最新评论