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直接内存和堆内存的关系

    Java直接内存和堆内存的关系

    在Java编程中,内存管理是一个重要的话题,本文介绍了Java中两种主要内存类型:堆内存和直接内存,堆内存是JVM管理的主要内存区域,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    SpringBoot+SpringBatch+Quartz整合定时批量任务方式

    这篇文章主要介绍了SpringBoot+SpringBatch+Quartz整合定时批量任务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 使用@slf4j找不到符号log的问题及解决

    使用@slf4j找不到符号log的问题及解决

    这篇文章主要介绍了使用@slf4j找不到符号log的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java 为什么要避免使用finalizer和Cleaner

    Java 为什么要避免使用finalizer和Cleaner

    这篇文章主要介绍了Java 为什么要避免使用finalizer和Cleaner,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • 浅析java中print和println的区别

    浅析java中print和println的区别

    以下是对java中print和println的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • windows下 jdk1.7安装教程图解

    windows下 jdk1.7安装教程图解

    java编程的初学者在开始编码前都会遇到一个难题,那就是jdk1.7环境变量配置怎么操作,怎么安装,针对这个难题,小编特地为大家整理相关教程,不了解的朋友可以前往查看使用
    2018-05-05
  • Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程

    Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程

    这篇文章主要介绍了Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程,需要的朋友可以参考下
    2020-10-10
  • springboot结合JWT实现单点登录的示例

    springboot结合JWT实现单点登录的示例

    本文主要介绍了springboot结合JWT实现单点登录的示例,包括生成Token、验证Token及使用Redis存储Token,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • java中如何调用js

    java中如何调用js

    Nashorn是Java8中引入的一个新的JavaScript引擎,它允许在JVM上运行JavaScript代码,并且可以与Java代码相互调用,Nashorn遵循JSR233规范,是一个纯Java实现的JavaScript引擎,可以与Java程序无缝集成,提供动态脚本执行和灵活性
    2025-01-01
  • 使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法

    使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法

    jdbc4.0最重要的特征是支持xml数据类型,接下来通过本文重点给大家介绍如何使用jdbc4.0操作xml类型的字段,对jdbc4.0 xml相关知识感兴趣的朋友一起看下吧
    2016-08-08

最新评论