Код ниже генерирует этот снимок экрана:
Метка под 2-м столбцом не хочет должным образом требовать дополнительного места, когда ее нужно обернуть. Это происходит только тогда, когда столбцы используют ширину в процентах — в документации говорится, что в этом случае будут игнорироваться все остальные свойства, включая hgrow и т. д., но не упоминается, что это также повлияет на работу строк.. но похоже, что это так.
У кого-нибудь есть работа или может сказать мне, что я делаю неправильно? Все, что я хочу, это отобразить 3 изображения с метками неизвестного размера под ними, которые хорошо расположены и выровнены, и все они одинакового размера... Что-то вроде этого:
Вышеупомянутое выполняется с помощью пользовательского элемента управления с предварительным названием «BetterGridPane»...
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class TestLabelWrap extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
GridPane root = new GridPane();
root.add(new ListView(FXCollections.observableArrayList("1", "2", "3")), 0, 0);
root.add(new ListView(FXCollections.observableArrayList("1", "2", "3")), 1, 0);
root.add(new ListView(FXCollections.observableArrayList("1", "2", "3")), 2, 0);
root.add(new Label("Value A"), 0, 1);
root.add(new Label("The value for this porperty is so large it wraps, The value for this porperty is so large it wraps") {{
setWrapText(true);
}}, 1, 1);
root.add(new Label("Value C"), 2, 1);
root.getColumnConstraints().add(new ColumnConstraints() {{ setPercentWidth(33.33); }});
root.getColumnConstraints().add(new ColumnConstraints() {{ setPercentWidth(33.33); }});
root.getColumnConstraints().add(new ColumnConstraints() {{ setPercentWidth(33.33); }});
root.getRowConstraints().add(new RowConstraints() {{ setVgrow(Priority.NEVER); }});
root.getRowConstraints().add(new RowConstraints() {{ setVgrow(Priority.ALWAYS); }});
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}