Когда я получаю правильное связанное изображение, вам нужно либо «разделить» ячейку строки таблицы по вертикали, либо реализовать что-то вроде «разметки строк» для TabelView - обе эти вещи TableView не поддерживает вне-box - или вам нужно создать CellFactory, который создает пользовательский TableCell, который, например, отображает две метки в VBox.Не зная, как выглядят ваши данные, подход будет выглядеть примерно так:
theTableColumn.setCellFactory(column -> {
return new TableCell<YourDataClass, YourDataFieldType>() {
private VBox vbox;
private Label upperLabel = new Label();
private Label lowerLabel = new Label();
{
vbox = new VBox(upperLabel, lowerLabel);
this.setGraphic(this.vbox);
this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
}
@Override
protected void updateItem(YourDataFieldType item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
upperLabel.setText(null);
lowerLabel.setText(null);
} else {
upperLabel.setText("Here goes the upper text (row)");
lowerLabel.setText("Here goes the lower text (row)");
}
}
};
});
Это просто быстрый взгляд на то, как я обычно решаю специальные задачи рендеринга в TableView, пожалуйста, прочитайте его как эскиз или псевдокод.Идея заключается в следующем:
- TableCell - это метка, поэтому вы можете использовать свойство Graphic, чтобы получить любой граф Node или Node, отображаемый внутри TabelCell
- Важно: установить ячейку таблицыGRAPHIC_ONLY
- Остальное - стандартная сантехника JavaFX TableCell (... не забывайте случай, когда ячейка должна быть пустой!)
- Пока вам просто нужно отобразить две строки текста в одной ячейке, лучше использовать экземпляры Label.TextField будет использоваться только тогда, когда необходимо редактирование ячейки - в этом случае вам потребуется немного другой подход.
- Что еще нужно сделать: горизонтальная линия, которую вы нарисовали на своем изображении, может быть сделана с помощью CSS.Возможно, вам лучше решить эту проблему с помощью фона ячейки таблицы и расстояния между метками, чем с нижней границей верхней метки.
- Более общий подход для shure состоит в добавлении охвата строк в представление таблицы, иэто избавит вас от CSS для деталей рендеринга.Но это также означало бы «немного больше работы»; -)
Надеюсь, это поможет - пожалуйста, не стесняйтесь спрашивать, есть ли еще вопросы.