FXSwing oder JavaFX?
Ja, und auch nicht für die prefWidth. Der Parameter (in VBox) fillWidth zeigt keine Wirkung egal ob true oder false.Da bin ich normalerweise raus, aber in der Doku steht:
"VBox will resize children (if resizable) to their preferred heights and uses its fillWidth property to determine whether to resize their widths to fill its own width or keep their widths to their preferred (fillWidth defaults to true)."
Scheint nicht so, als ob sich VBox für die maximum width interessieren würde...
Das funktioniert nur solange die innere HBox nicht ein Kind beinhaltet das größer "sein kann, aber nicht darf (maxWidth)" als die HBox denn dann geht auch wieder die Hbox über ihre maxWidth hinaus. Ich verstehe das einfach nicht.Wobei hier https://stackoverflow.com/questions/28295380/vbox-set-fill-width-true-specific-to-element etwas anderes steht, auch was max width betrifft.
Danke, ich werde das Problem nun präzisieren und melde mich wieder,Da kann bestimmt @dzim helfen
Stage().apply {
initModality(Modality.WINDOW_MODAL)
initStyle(StageStyle.UTILITY)
isResizable = false
maxWidth = 500.0
maxHeight = 500.0
scene = VBox().apply {
setStyle("-fx-border-color: blue;")
children += TextArea().apply {
setStyle("-fx-border-color: red;")
text = "test"
maxWidth = 200.0
}
}.let { Scene(it, 500.0, 500.0) }
}.showAndWait()
Die Reihenfolge ist folgende:btw: falsches Unter-Forum, oder? Da schau ich normalerweise nie rein (und zugegeben im Moment schau ich wenig rein)
Stage().apply {
initModality(Modality.WINDOW_MODAL)
initStyle(StageStyle.UTILITY)
isResizable = false
maxWidth = 500.0
maxHeight = 500.0
scene = VBox().apply {
setStyle("-fx-border-color: blue;")
children += HBox().apply {
setStyle("-fx-border-color: pink;")
children += TextArea().apply {
setStyle("-fx-border-color: red;")
text = "test"
maxWidth = 200.0
}
}
}.let { Scene(it, 500.0, 500.0) }
}.showAndWait()
maxWidth = 200.0
weg, nimmt die TextArea erwartungskonform den verfügbaren Platz innerhalb der HBox ein.maxWidth = 200.0
von der TextArea in die HBox, beschränke ich die Breite der HBox innerhalb der VBox, die TextArea nimmt immer noch die volle Breite in der HBox ein. Das Resultat sieht wie folgt aus:Das Problem ist gelöst: Ich habe nun die Funktion "setPrefWidth()" gefunden, diese in der TextArea auf 200 gesetzt löst mein Problem. Bisher habe ich es immer nur mit "prefWidth" probiert.So, ich konnte es jetzt kurz testen. Ich konnte jedoch kein Fehlverhalten feststellen.
Java:Stage().apply { initModality(Modality.WINDOW_MODAL) initStyle(StageStyle.UTILITY) isResizable = false maxWidth = 500.0 maxHeight = 500.0 scene = VBox().apply { setStyle("-fx-border-color: blue;") children += HBox().apply { setStyle("-fx-border-color: pink;") children += TextArea().apply { setStyle("-fx-border-color: red;") text = "test" maxWidth = 200.0 } } }.let { Scene(it, 500.0, 500.0) } }.showAndWait()
Führt zu
Anhang anzeigen 14924
Die HBox nimmt also die volle Breite innerhalb der VBox ein, aber die TextArea wird korrekt beschränkt.
Lasse ich dasmaxWidth = 200.0
weg, nimmt die TextArea erwartungskonform den verfügbaren Platz innerhalb der HBox ein.
Anhang anzeigen 14925
Verschiebe ich dasmaxWidth = 200.0
von der TextArea in die HBox, beschränke ich die Breite der HBox innerhalb der VBox, die TextArea nimmt immer noch die volle Breite in der HBox ein. Das Resultat sieht wie folgt aus:
Anhang anzeigen 14926
Vielleicht müsstest du dein problematisches Code-Beispiel mal wirklich als Code zur Verfügung stellen, denn im Moment kann ich es einfach nicht nachvollziehen...
¯\_(ツ)_/¯