本文共 2250 字,大约阅读时间需要 7 分钟。
package javafxui;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 { ListViewlist = new ListView<>(); ObservableList 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 l) -> new ColorRectCell()); //为选中的list Item 显示对应颜色的 文本 list.getSelectionModel().selectedItemProperty().addListener( (ObservableValue ov, String old_val, String new_val) -> { label.setText(new_val); label.setTextFill(Color.web(new_val)); }); stage.show(); } static class ColorRectCell extends ListCell { //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); }}
转载地址:http://qoimi.baihongyu.com/