JavaFX 2 BorderPane Benutze vollen Platz

7
___ answer42230662 ___
%Vor%     
___ qstnhdr ___ JavaFX 2 BorderPane Benutze vollen Platz ___ answer11216798 ___

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%     
___ tag123userinterface ___ Das System, über das Menschen mit einem Computer interagieren, wird "UI" genannt, was für "Benutzeroberfläche" steht. Dieses Tag kann für UI-bezogene Programmierfragen verwendet werden. Beachten Sie, dass es eine separate Stack Exchange-Site für Benutzeroberflächen, Interaktionen mit dem Computer und Benutzererlebnis gibt: http://ux.stackexchange.com. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123javafx ___ Die JavaFX-Plattform ermöglicht Entwicklern das Erstellen und Bereitstellen von Rich Internet Applications (RIA), die sich über mehrere Plattformen und Browser hinweg konsistent verhalten. JavaFX 1.3 und älter waren Skriptsprachen, während JavaFX 2.x + / 8.x Benutzern die Verwendung von Java ermöglicht. FXML ermöglicht JavaFX, der MVC-Architektur zu folgen. ___ tag123htmleditor ___ Ein HTML-Editor ist eine Softwareanwendung zum Erstellen von Webseiten. ___
Googles 26.06.2012, 17:48
quelle

2 Antworten

29

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%     
jewelsea 26.06.2012, 22:26
quelle
0
%Vor%     
brokenjade 14.02.2017 15:56
quelle