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"); } } });
其中“ ”中的字母為色彩代碼,通過上面的代碼即可為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; /** * 點(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直接內(nèi)存和堆內(nèi)存的關(guān)系
在Java編程中,內(nèi)存管理是一個(gè)重要的話題,本文介紹了Java中兩種主要內(nèi)存類型:堆內(nèi)存和直接內(nèi)存,堆內(nèi)存是JVM管理的主要內(nèi)存區(qū)域,感興趣的朋友跟隨小編一起看看吧2024-09-09SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式
這篇文章主要介紹了SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java 為什么要避免使用finalizer和Cleaner
這篇文章主要介紹了Java 為什么要避免使用finalizer和Cleaner,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03Intelli IDEA安裝Scala插件并安裝Scala軟件和配置環(huán)境變量的詳細(xì)教程
這篇文章主要介紹了Intelli IDEA安裝Scala插件并安裝Scala軟件和配置環(huán)境變量的詳細(xì)教程,需要的朋友可以參考下2020-10-10springboot結(jié)合JWT實(shí)現(xiàn)單點(diǎn)登錄的示例
本文主要介紹了springboot結(jié)合JWT實(shí)現(xiàn)單點(diǎn)登錄的示例,包括生成Token、驗(yàn)證Token及使用Redis存儲(chǔ)Token,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01使用JDBC4.0操作XML類型的字段(保存獲取xml數(shù)據(jù))的方法
jdbc4.0最重要的特征是支持xml數(shù)據(jù)類型,接下來通過本文重點(diǎn)給大家介紹如何使用jdbc4.0操作xml類型的字段,對(duì)jdbc4.0 xml相關(guān)知識(shí)感興趣的朋友一起看下吧2016-08-08