欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaFX如何獲取ListView(列表視圖)的選項

 更新時間:2024年01月02日 10:21:10   作者:閃光的回憶  
這篇文章主要介紹了JavaFX如何獲取ListView(列表視圖)的選項,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

我們使用下面的圖片進行舉例,點擊左側(cè)ListView選項,右側(cè)label面板顯示對應(yī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;

/**
 * 點擊顏色塊顯示對應(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) {
                //返回一個自定義的ListCell實現(xiàn)類對象
                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);
            //設(shè)置圖形顏色
            if (!b){
                ellipse.setFill(Color.web(s));
                setGraphic(ellipse);
            }
        }
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論