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打印简单图形:三角形,菱形,四边形,需要的朋友可以参考下
    2015-07-07
  • SpringMVC运行时出现404错误的解决办法汇总(基本包含所有错误可能)

    SpringMVC运行时出现404错误的解决办法汇总(基本包含所有错误可能)

    初学SpringMVC基本都会碰到404问题(确实也困扰了我好长时间),但出现404问题的原因有很多,如果确认路径,代码没问题,并且服务器可以正常启动,依然出现404问题的话,就根据本篇步骤逐一排查,需要的朋友可以参考下
    2024-04-04
  • 深入IDEA Debug问题透析详解

    深入IDEA Debug问题透析详解

    这篇文章主要为大家介绍了深入IDEA Debug问题透析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Java的Junit测试框架中的其他注解说明

    Java的Junit测试框架中的其他注解说明

    这篇文章主要介绍了Java的Junit测试框架中的其他注解说明,JUnit是一个开源的java单元测试框架,它是XUnit测试体系架架构的一种体现,
    是Java语言事实上的标准单元测试库,需要的朋友可以参考下
    2023-10-10
  • Java使用备忘录模式实现过关类游戏功能详解

    Java使用备忘录模式实现过关类游戏功能详解

    这篇文章主要介绍了Java使用备忘录模式实现过关类游戏功能,结合实例形式详细分析了java备忘录模式的概念、原理及其在过关类游戏中的具体应用方法,需要的朋友可以参考下
    2018-04-04
  • java-jsp springmvc-controller 传值到页面的方法

    java-jsp springmvc-controller 传值到页面的方法

    下面小编就为大家分享一篇java-jsp springmvc-controller 传值到页面的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 生成8位随机不重复的数字编号的方法

    生成8位随机不重复的数字编号的方法

    生成随机不重复的数字编号在某些情况下也会用到,本文以生成8位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下
    2013-09-09
  • 多个SpringBoot项目采用redis实现Session共享功能

    多个SpringBoot项目采用redis实现Session共享功能

    这篇文章主要介绍了多个SpringBoot项目采用redis实现Session共享,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • java SpringBoot注解@Async不生效的解决方法

    java SpringBoot注解@Async不生效的解决方法

    大家好,本篇文章主要讲的是java SpringBoot注解@Async不生效的解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 2022最新Java泛型详解(360度无死角介绍)

    2022最新Java泛型详解(360度无死角介绍)

    Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了 编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构,这篇文章主要介绍了java泛型的基本概念及使用详解,感兴趣的朋友跟随小编一起看看吧
    2022-10-10

最新评论