Как сделать ширину ListView равной самой широкой ячейке?JAVA

Программисты JAVA общаются здесь
Anonymous
Как сделать ширину ListView равной самой широкой ячейке?

Сообщение Anonymous »

Мне нужно сделать ListView ровно настолько, чтобы отображалась самая широкая ячейка (без обрезки), но не более того. Например, если есть три метки шириной 100 пикселей, 200 пикселей и 300 пикселей, то ширина ListView должна быть 300 пикселей.
Я попробовал следующий код, но он не сработал:

Код: Выделить всё

public class Test extends Application {

@Override
public void start(Stage primaryStage) {
ObservableList items = FXCollections.observableArrayList(
"Short item",
"A bit longer item",
"This is a much longer item that needs more space"
);

ListView listView = new ListView(items);

ListCell tempCell = new ListCell();
double maxWidth = 0;
for (String item : items) {
tempCell.setText(item);
double cellWidth = tempCell.prefWidth(-1);
if (cellWidth > maxWidth) {
maxWidth = cellWidth;
}
}

listView.setPrefWidth(maxWidth);
var tabPane = new TabPane(new Tab("Test"));
HBox.setHgrow(tabPane, Priority.ALWAYS);
var root = new HBox(listView, tabPane);
Scene scene = new Scene(root, 800, 300);
primaryStage.setScene(scene);
primaryStage.setTitle("ListView Width Example");
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}
Может ли кто-нибудь сказать, как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/789 ... idest-cell

Вернуться в «JAVA»