首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何设置单元格背景颜色(JavaFX、tableview)

在JavaFX中,设置单元格背景颜色可以通过使用自定义的单元格工厂(TableCellFactory)来实现。以下是一个完整的示例代码:

代码语言:txt
复制
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Callback;

public class CellBackgroundExample extends Application {

    public static class Person {
        private final SimpleStringProperty name;
        private final SimpleStringProperty age;

        public Person(String name, String age) {
            this.name = new SimpleStringProperty(name);
            this.age = new SimpleStringProperty(age);
        }

        public String getName() {
            return name.get();
        }

        public void setName(String name) {
            this.name.set(name);
        }

        public String getAge() {
            return age.get();
        }

        public void setAge(String age) {
            this.age.set(age);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        TableView<Person> tableView = new TableView<>();
        ObservableList<Person> data = FXCollections.observableArrayList(
                new Person("John", "25"),
                new Person("Jane", "30"),
                new Person("Mike", "35")
        );
        tableView.setItems(data);

        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
        TableColumn<Person, String> ageColumn = new TableColumn<>("Age");
        ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));

        tableView.getColumns().add(nameColumn);
        tableView.getColumns().add(ageColumn);

        ageColumn.setCellFactory(new Callback<>() {
            @Override
            public TableCell<Person, String> call(TableColumn<Person, String> param) {
                return new TableCell<>() {
                    @Override
                    protected void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);

                        if (item == null || empty) {
                            setText(null);
                            setStyle("");
                        } else {
                            setText(item);

                            int age = Integer.parseInt(item);
                            if (age < 30) {
                                // 设置背景颜色为红色
                                setBackground(Color.RED);
                            } else {
                                // 设置背景颜色为绿色
                                setBackground(Color.GREEN);
                            }
                        }
                    }
                };
            }
        });

        StackPane root = new StackPane(tableView);
        primaryStage.setScene(new Scene(root, 300, 200));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

这个例子创建了一个包含姓名和年龄的表格,根据年龄的不同设置了不同的背景颜色。如果年龄小于30岁,单元格的背景将被设置为红色,否则为绿色。

注意,在这个例子中,我们通过使用TableCell的setStyle方法设置了单元格的背景颜色。如果需要其他自定义样式,可以根据需要使用CSS样式。

更多关于JavaFX的信息和相关产品介绍,你可以访问腾讯云官方网站的JavaFX相关页面: JavaFX 相关产品和产品介绍链接地址

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券