У меня проблема с изменением цвета фона ячеек таблицы в JavaFX8.Как изменить цвет фона не выбранной ячейки в представлении таблицы JavaFx 8
применения нового стиля с
SetStyle ("- FX-выравнивания: правоцентристской; -fx-цвет фона: # FFD9D9;")
Мой вопрос здесь, где была горизонтальная граница?
Это становится еще хуже, когда вы выбираете эту линию.
Как я могу изменить белый цвет в ячейках на другой, не изменяя ничего?
Пример класса (работает корректно)
public class TableCellColorTest extends Application {
private static final String[] COLUMN_HEADERS = new String[] { "2014", "2015", "2016", "2017", "2018" };
private static final String[] COLUMN_STYLES = new String[] { "table-row-cell-2014", "table-row-cell-2015", "table-row-cell-2016", "table-row-cell-2017", "table-row-cell-2018" };
public static void main(String... args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(createContent(), 1000, 600);
primaryStage.setScene(scene);
primaryStage.show();
}
private Parent createContent() {
ObservableList<String[]> data = FXCollections.observableArrayList();
data.add(new String[] { "321.500,00 €", "262.500,00 €", "66.000,00 €", "0,00 €", "0,00 €" });
data.add(new String[] { "", "", "", "", "", "", "" });
data.add(new String[] { "321.500,00 €", "262.500,00 €", "66.000,00 €", "0,00 €", "0,00 €" });
data.add(new String[] { "50.000,00 €", "100.000,00 €", "50.000,00 €", "0,00 €", "0,00 €" });
TableView<String[]> table = new TableView<>(data);
table.setPrefWidth(990);
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.getStylesheets().add("styles.css");
for (int i = 0; i < 5; i++) {
TableColumn<String[], String> col = new TableColumn<>(COLUMN_HEADERS[i]);
final int _i = i;
col.setCellValueFactory(cellData -> new ReadOnlyObjectWrapper(cellData.getValue()[_i]));
// set color
col.setCellFactory(cellData -> {
return new TableCell<String[], String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
if (!empty) {
getStyleClass().add(COLUMN_STYLES[_i]);
}
}
};
});
table.getColumns().add(col);
}
FlowPane flowPane = new FlowPane(table);
return flowPane;
}
}
работает стилевых
.table-row-cell-2014 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: #FFD9D9;
-fx-background-insets: 0 0 1 0;
}
.table-row-cell:selected .table-row-cell-2014, .table-row-cell:selected .table-row-cell-2015,
.table-row-cell:selected .table-row-cell-2016, .table-row-cell:selected .table-row-cell-2017,
.table-row-cell:selected .table-row-cell-2018 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: null;
-fx-background-insets: 0 0 1 0;
}
.table-row-cell-2015 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: #FFF5D9;
-fx-background-insets: 0 0 1 0;
}
.table-row-cell-2016 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: #ECFFD9;
-fx-background-insets: 0 0 1 0;
}
.table-row-cell-2017 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: #D9FFE2;
-fx-background-insets: 0 0 1 0;
}
.table-row-cell-2018 {
-fx-alignment: CENTER-RIGHT;
-fx-background-color: #D9FFFF;
-fx-background-insets: 0 0 1 0;
}
Так что в принципе означает, что ячейка по умолчанию является прозрачным, а граница и выбор цвета основан на что-то позади ячейки как строки или таблицы. –
Спасибо, что ты указал мне в правильном направлении, и ваш ответ в http://stackoverflow.com/questions/29857596/javafx-tableview-change-selected-cell-colour?rq=1 помог также –
Исправить. Ячейка по умолчанию прозрачна, но определяет границу на правом краю. –