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 {
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);
}
}
UI控件-> ListView(2)
最新推荐文章于 2024-04-20 17:59:35 发布