Как я могу узнать, что элемент в TableView был усечен (получил многоточие)? - PullRequest
0 голосов
/ 14 сентября 2018

Я использую TableView.Данные String, которые нужно отобразить, имеют переменную длину.Как я могу узнать, были ли данные String слишком длинными (и, следовательно, получены эллипсы)?

Я предполагаю использовать пользовательский TableCell (вызывая setCellFactory ()), а в updateItem () я должен запросить пиксель-широк данных, но я не знаю как.

        column.setCellFactory(column ->
            new TableCell<Transaction, String>() {
                @Override
                protected void updateItem(final String item, final boolean empty) {
                    super.updateItem(item, empty);
                    setText(item);


                    if (/*measuredWidth > getWidth()*/) {
                        setTooltip(new Tooltip(item));
                    }
                }
            }
    );

Есть идеи по этому поводу?

1 Ответ

0 голосов
/ 20 сентября 2018
column.setCellFactory(col -> new TableCell<Object, String>()
    {
        @Override
        protected void updateItem(final String item, final boolean empty)
        {
            super.updateItem(item, empty);
            setText(item);
            TableColumn tableCol = (TableColumn) col;

            if (item != null && tableCol.getWidth() < new Text(item + "  ").getLayoutBounds().getWidth())
            {
                tooltipProperty().bind(Bindings.when(Bindings.or(emptyProperty(), itemProperty().isNull())).then((Tooltip) null).otherwise(new Tooltip(item)));
            } else
            {
                tooltipProperty().bind(Bindings.when(Bindings.or(emptyProperty(), itemProperty().isNull())).then((Tooltip) null).otherwise((Tooltip) null));
            }

        }
    });
...