UI控件-> ListView(2)

来源:互联网 发布:手机拍照识字软件 编辑:程序博客网 时间:2024/06/05 15:03
packagejavafxui;import javafx.application.Application;import javafx.beans.value.ObservableValue;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import javafx.scene.Scene;import javafx.scene.control.Label;import javafx.scene.control.ListCell;import javafx.scene.control.ListView;import javafx.scene.layout.Priority;import javafx.scene.layout.VBox;import javafx.scene.paint.Color;import javafx.scene.shape.Rectangle;import javafx.scene.text.Font;import javafx.stage.Stage;public class LearnUI extends Application {    ListView<String> list = new ListView<>();    ObservableList<String> data = FXCollections.observableArrayList(            "chocolate", "salmon", "gold", "coral", "darkorchid",            "darkgoldenrod", "lightsalmon", "black", "rosybrown", "blue",            "blueviolet", "brown");    final Label label = new Label();    @Override    public void start(Stage stage) {        VBox box = new VBox();        Scene scene = new Scene(box, 200, 200);        stage.setScene(scene);        stage.setTitle("ListViewSample");        box.getChildren().addAll(list, label);        VBox.setVgrow(list, Priority.ALWAYS);//垂直适应窗口大小        label.setLayoutX(10);        label.setLayoutY(115);        label.setFont(Font.font("Verdana", 20));        list.setItems(data);        list.setCellFactory((ListView<String> l) -> new ColorRectCell());        //为选中的list Item 显示对应颜色的 文本        list.getSelectionModel().selectedItemProperty().addListener(                (ObservableValue<? extends String> ov, String old_val,                        String new_val) -> {                    label.setText(new_val);                    label.setTextFill(Color.web(new_val));                });        stage.show();    }    static class ColorRectCell extends ListCell<String> {    //item 就是指ListView  中的item 元素        @Override        public void updateItem(String item, boolean empty) {        super.updateItem(item, empty);        Rectangle rectangle = new Rectangle(100, 20);        if(item != null) {        rectangle.setFill(Color.web(item));        setGraphic(rectangle);        }        else {        setGraphic(null);        }        }    }    public static void main(String[] args) {        launch(args);    }}

原创粉丝点击