OK, also ein paar Dinge, die hier schief gehen, ich werde versuchen, sie zu adressieren und ihnen einen Rat und eine Beispiellösung zu geben.
Ich versuche eine vBox mit einem TextField und einem HTML-Editor in meinem BorderPane zu platzieren, aber der volle Platz wird nicht benutzt.
Sie müssen die VBox.setVgrow (Editor, Priority.ALWAYS) Methode, um den HTMLEditor dazu zu bringen, zusätzlichen Platz in der VBox zu belegen. Stellen Sie außerdem sicher, dass der HTML-Editor über eine unbegrenzte maximale Höhe verfügt, damit er an den verfügbaren Bereich angepasst werden kann, z. B. %code% . Der Aufruf von %code% ist redundant, da der Standardwert für die Eigenschaft %code% %code% ist.
Aber selbst wenn Sie all das tun (ab 2.2b13), gibt es einen Fehler in der WebPane-Sizing, der Ihnen Probleme bereiten wird. Intern ist das WebPane als GridPane mit der Toolbar und einem editierbaren WebView implementiert. Standardmäßig hat WebView eine bevorzugte Größe von 800x600. Das HtmlEditor-Steuerelement legt die GridPane-Integritätsbedingungen für das WebView nicht fest, um eine Größenanpassung nach der bevorzugten Größe zu ermöglichen.
Um dies zu umgehen, können Sie das WebView über eine css-Suche nach suchen, die zu einer aktiven Szene hinzugefügt wurde, und die GridPane-Einschränkungen manuell anpassen. Hier ist ein Code, um das zu tun:
%Vor%Ich verkleinere das Fenster, der HTML-Editor überlappt mit meinem linken Optionsfenster.
Legen Sie explizit die Mindestbreite für das mittlere Fenster in Ihrem BorderPane so fest, dass es nicht über die äußeren Fensterkanten überläuft.
%Vor%Sie müssen dies tun, weil die BorderPane-Dokumentation Folgendes angibt:
BorderPane schneidet seinen Inhalt standardmäßig nicht ab, sodass es möglich ist, dass sich die Grenzen von Kindern außerhalb seiner eigenen Grenzen erstrecken, wenn die Mindestgröße eines Kindes verhindert, dass es in diesen Bereich passt.
Nebenbei bemerkt sind die Nachschlageaufrufe in Ihrem Code verdächtig. Normalerweise können Knoten erst nach css ID gesucht werden, wenn der Knoten einer aktiven Szene auf einer angezeigten Stufe hinzugefügt wurde und das JavaFX-System die Möglichkeit hatte, einen CSS-Layout-Durchlauf für den Knoten auszuführen - andernfalls gibt die Suche nur null zurück.
Zum Debuggen von JavaFX-Layoutproblemen ist die Anwendung ScenicView von unschätzbarem Wert.
Hier ist ein vollständiges Beispiel, um ein Layout zu erzeugen, das dem in Ihrer Frage verlinkten Bild ähnelt, aber ohne die von Ihnen erwähnten Probleme.
%Vor%OK, also ein paar Dinge, die hier schief gehen, ich werde versuchen, sie zu adressieren und ihnen einen Rat und eine Beispiellösung zu geben.
Ich versuche eine vBox mit einem TextField und einem HTML-Editor in meinem BorderPane zu platzieren, aber der volle Platz wird nicht benutzt.
Sie müssen die VBox.setVgrow (Editor, Priority.ALWAYS) Methode, um den HTMLEditor dazu zu bringen, zusätzlichen Platz in der VBox zu belegen. Stellen Sie außerdem sicher, dass der HTML-Editor über eine unbegrenzte maximale Höhe verfügt, damit er an den verfügbaren Bereich angepasst werden kann, z. B. editor.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE)
. Der Aufruf von editorBox.setFillWidth(true)
ist redundant, da der Standardwert für die Eigenschaft fillWidth
true
ist.
Aber selbst wenn Sie all das tun (ab 2.2b13), gibt es einen Fehler in der WebPane-Sizing, der Ihnen Probleme bereiten wird. Intern ist das WebPane als GridPane mit der Toolbar und einem editierbaren WebView implementiert. Standardmäßig hat WebView eine bevorzugte Größe von 800x600. Das HtmlEditor-Steuerelement legt die GridPane-Integritätsbedingungen für das WebView nicht fest, um eine Größenanpassung nach der bevorzugten Größe zu ermöglichen.
Um dies zu umgehen, können Sie das WebView über eine css-Suche nach suchen, die zu einer aktiven Szene hinzugefügt wurde, und die GridPane-Einschränkungen manuell anpassen. Hier ist ein Code, um das zu tun:
%Vor%Ich verkleinere das Fenster, der HTML-Editor überlappt mit meinem linken Optionsfenster.
Legen Sie explizit die Mindestbreite für das mittlere Fenster in Ihrem BorderPane so fest, dass es nicht über die äußeren Fensterkanten überläuft.
%Vor%Sie müssen dies tun, weil die BorderPane-Dokumentation Folgendes angibt:
BorderPane schneidet seinen Inhalt standardmäßig nicht ab, sodass es möglich ist, dass sich die Grenzen von Kindern außerhalb seiner eigenen Grenzen erstrecken, wenn die Mindestgröße eines Kindes verhindert, dass es in diesen Bereich passt.
Nebenbei bemerkt sind die Nachschlageaufrufe in Ihrem Code verdächtig. Normalerweise können Knoten erst nach css ID gesucht werden, wenn der Knoten einer aktiven Szene auf einer angezeigten Stufe hinzugefügt wurde und das JavaFX-System die Möglichkeit hatte, einen CSS-Layout-Durchlauf für den Knoten auszuführen - andernfalls gibt die Suche nur null zurück.
Zum Debuggen von JavaFX-Layoutproblemen ist die Anwendung ScenicView von unschätzbarem Wert.
Hier ist ein vollständiges Beispiel, um ein Layout zu erzeugen, das dem in Ihrer Frage verlinkten Bild ähnelt, aber ohne die von Ihnen erwähnten Probleme.
%Vor%Tags und Links java user-interface javafx html-editor