JavaFX如何獲取ListView(列表視圖)的選項(xiàng)
我們使用下面的圖片進(jìn)行舉例,點(diǎn)擊左側(cè)ListView選項(xiàng),右側(cè)label面板顯示對(duì)應(yīng)顏色。
如何獲取用戶的選擇項(xiàng)?

上代碼
/**
* 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");
}
}
});
其中“ ”中的字母為色彩代碼,通過上面的代碼即可為L(zhǎng)istView添加事件處理
---------------------分界線---------------------
下面是完整代碼
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;
/**
* 點(diǎn)擊顏色塊顯示對(duì)應(yīng)顏色的圖形
* @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設(shè)置為單元工廠
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> stringListView) {
//返回一個(gè)自定義的ListCell實(shí)現(xiàn)類對(duì)象
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();
}
/**
* 自定義一個(gè)帶顏色的單元格
*/
class ColorCell extends ListCell<String>{
@Override
protected void updateItem(String s, boolean b) {
super.updateItem(s, b);
Ellipse ellipse = new Ellipse(70, 10);
//設(shè)置圖形顏色
if (!b){
ellipse.setFill(Color.web(s));
setGraphic(ellipse);
}
}
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java之使用POI教你玩轉(zhuǎn)Excel導(dǎo)入與導(dǎo)出
這篇文章主要介紹了Java之使用POI教你玩轉(zhuǎn)Excel導(dǎo)入與導(dǎo)出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
SpringBoot 集成 Jasypt 對(duì)數(shù)據(jù)庫(kù)加密以及踩坑的記錄分享
這篇文章主要介紹了SpringBoot 集成 Jasypt 對(duì)數(shù)據(jù)庫(kù)加密以及踩坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
關(guān)于SpringCloud的微服務(wù)以及組件詳解
這篇文章主要介紹了關(guān)于SpringCloud的微服務(wù)以及組件詳解,是一個(gè)更高層次的、 架構(gòu)視角的綜合性大型項(xiàng)目, 他的目標(biāo)是構(gòu)建一套標(biāo)準(zhǔn)化的微服務(wù)解決方案,需要的朋友可以參考下2023-05-05
如何解決@value獲取不到y(tǒng)aml數(shù)組的問題
文章介紹了在使用YAML配置文件時(shí),通過@Value注解獲取整數(shù)和數(shù)組列表的配置方法,并提供了兩種解決方案:一種適用于非嵌套列表,另一種適用于嵌套列表等復(fù)雜配置2024-11-11
Spring Batch批量處理數(shù)據(jù)實(shí)現(xiàn)方式
SpringBatch是一個(gè)用于創(chuàng)建高效、健壯批量數(shù)據(jù)處理應(yīng)用的框架,支持事務(wù)管理、并發(fā)處理、重試機(jī)制、跳過機(jī)制等特性,它由Spring框架的一部分,包括Job、Step、ItemReader、ItemProcessor、ItemWriter等核心組件,在SpringBoot項(xiàng)目中集成SpringBatch2025-12-12
基于Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的示例代碼
在當(dāng)今的互聯(lián)網(wǎng)應(yīng)用中,微服務(wù)大行其道,隨著業(yè)務(wù)的發(fā)展和擴(kuò)展,單一的數(shù)據(jù)庫(kù)無法滿足日益增長(zhǎng)的數(shù)據(jù)需求,本文將基于 JDK17 + Spring Boot 3 和 MyBatis 框架實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源功能,需要的朋友可以參考下2024-09-09
Spring的事務(wù)控制實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Spring的事務(wù)控制實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
JavaWeb文件上傳下載實(shí)例講解(酷炫的文件上傳技術(shù))
在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳功能是非常常用的功能,今天來主要講講JavaWeb中的文件上傳功能的相關(guān)技術(shù)實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11

