JavaFX Tableview делает определенные ячейки окрашенными

TableColumn tc = new TableColumn();

tc.getStyleClass.add(".style in css file")

я установил столбец таблицы с файлом css. и я хочу, чтобы каждая ячейка имела разные фоны. есть ли способ сделать это?

tableColumn строка 1 фоновый цвет = зеленый, row2 = красный, row3 = синий и т. д.


person Jimmy Lee    schedule 29.09.2016    source источник


Ответы (1)


Вы должны использовать setRowFactory для вашего TableView и изменить стиль строки. Вот небольшой пример:

tableView.setRowFactory(new Callback<TableView<Data_type>, TableRow<Data_type>>(){
            //There can define some colors.
            int color = 0;
            String colors[] = new String[]{"red","blue","green"};
            @Override
            public TableRow<Data_type> call(TableView<Data_type> param) {
                final TableRow<Data_type> row = new TableRow<Data_type>() {
                    @Override
                    protected void updateItem(Data_type item, boolean empty) {
                        super.updateItem(item, empty);
                        //there write your code to stylize row
                        if(getIndex() > -1){
                            String color = colors[getIndex() % 3];
                            setStyle("-fx-background-color: "+ color + ";");

                        }
                    }
                };
                return row;
            }
        });

Результат:
введите здесь описание изображения

person Vladlen Gladis    schedule 29.09.2016
comment
Совет: используйте -fx-background вместо -fx-background-color. Это позволит правильно сохранить границы, а также позволит цвету текста автоматически адаптироваться к светлоте/темноте цвета фона. - person James_D; 29.09.2016
comment
когда мы прокручиваем, представление таблицы меняет цвета - person Catarina Ferreira; 14.08.2017