Локализация JavaFX 2.x TableView

Когда элемент управления TableView не содержит содержимого, он отображает "Нет содержимого в таблице". Как изменить/локализовать эту строку?

Ответ 1

Здесь вы идете

tableView.setPlaceholder(new Text("Your localized text here"));

Ответ 2

в представлении таблицы ничего не отображается, если нет данных

.table-row-cell:empty {
    -fx-background-color: lightyellow;
}

.table-row-cell:empty .table-cell {
    -fx-border-width: 0px;
}

Ответ 3

Следуя рекомендациям JavaFX, было бы лучше реализовать это как

Model.java

class Model {
    private final ObjectProperty<Text> placeholderProperty;

    Model(ResourceBundle resourceBundle) {

        placeholderProperty = new SimpleObjectProperty<>(new Text(resourceBundle.getString("placeholderTextFromLocalizationProperties")));
    }

    ...

    ObjectProperty<Text> placeholderProperty() {
        return placeholderProperty;
    }
}

Controller.java

class Controller implements Initializable {
    private Model model;
    @FXML
    private TableView tableView;
    ...
    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        model = new Model(resourceBundle);

        tableView.setPlaceholder(model.placeholderProperty().get());

    }
    ...
}

Когда вы собираетесь изменить локализацию, вам нужно только отредактировать файл своей собственности.