JavaFX Region vs. Pane

Sheeraz Gul 15 Februar 2024
  1. JavaFX-Region
  2. JavaFX-Pane
  3. JavaFX-Region vs. Bereich
JavaFX Region vs. Pane

Region und Pane werden verwendet, um die Größe der anpassbaren untergeordneten Knoten auf ihre bevorzugte Größe zu ändern und sie nicht neu zu positionieren. Dieses Tutorial demonstriert den Unterschied zwischen Region und Pane in JavaFX.

JavaFX-Region

Die JavaFX-Klasse Region kann als Basisklasse für alle JavaFX-Layoutfenster verwendet werden. Es stellt einige Eigenschaften bereit, die von allen JavaFX-Layoutklassen gemeinsam genutzt werden, die zum Erweitern der Region verwendet werden.

JavaFX hat viele Klassen, die Unterklassen von Pane, Control, Chart und Axis sind. Diese vier und alle anderen Klassen sind die Unterklassen der Klasse Region; alle haben dieselben Eigenschaften wie Region.

Die Eigenschaften der Region sind unten angegeben:

  • Background
  • Content Area
  • Padding
  • Borders
  • Margin
  • Region Insets

JavaFX-Pane

JavaFX Pane ist eine Unterklasse von Region. Das Pane ist ein Layout-Container, der viele andere JavaFX-Komponenten enthalten kann, um sie zu gestalten.

Es bietet keinen Layoutalgorithmus, sondern zeigt die enthaltenen Komponenten an der für die Komponenten bevorzugten Position an. Das Pane verwendet layoutX und layoutY, die durch seine untergeordneten Komponenten angegeben werden, um zu bestimmen, wo sie angezeigt werden sollen.

Das Pane erbt alle Eigenschaften der JavaFX-Klasse Region, da es sich um eine Unterklasse handelt. So können Hintergrund, Inhaltsbereich, Polsterung, Rahmen usw. auch für Pane verwendet werden.

JavaFX-Region vs. Bereich

Sowohl Region als auch Pane werden verwendet, um die anpassbaren untergeordneten Knoten auf ihre bevorzugte Größe zu ändern. Sie werden sie niemals neu positionieren.

  • Die Region ist eine Oberklasse, die untergeordnete Knoten hat. Die Pane ist eine Unterklasse der Region-Klasse mit untergeordneten Knoten.
  • Die Region erlaubt keine Manipulation der untergeordneten Knoten über die öffentliche API; Andererseits lässt Pane die öffentliche API die untergeordneten Knoten manipulieren.
  • Die Region.getChildren() ist geschützt, während Pane.getChildren keine geschützte Methode ist.
  • Die Region ist den Komponentenentwicklern gewidmet; Aus diesem Grund gibt es die Möglichkeit, dem API-Benutzer zu erlauben oder nicht, die untergeordneten Elemente wie Pane, Hbox usw. zu manipulieren. Andererseits bietet Pane keine solche Erlaubnis; API-Benutzer können die untergeordneten Knoten direkt manipulieren.

Lassen Sie uns Beispiele für Region und Pane ausprobieren.

Das Beispiel für Region:

package delftstack;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFX_Reigon extends Application {
  public void start(Stage Label_Stage) {
    String Label_Text = "DelftStack is a resource for everyone interested in programming.";
    // Create a Label
    Label Demo_Label = new Label(Label_Text);
    // wrap the label
    Demo_Label.setWrapText(true);
    // Set the maximum width of the label
    Demo_Label.setMaxWidth(300);
    // Set the position of the label
    Demo_Label.setTranslateX(30);
    Demo_Label.setTranslateY(30);
    // Create a Region
    Region Label_Root = new Region();
    // Add Children to region which will throw an error
    Label_Root.getChildren().add(Demo_Label);
    // Set the stage
    Scene Label_Scene = new Scene(Label_Root, 595, 150, Color.BEIGE);
    Label_Stage.setTitle("Region Example");
    Label_Stage.setScene(Label_Scene);
    Label_Stage.show();
  }
  public static void main(String args[]) {
    launch(args);
  }
}

Der obige Code wird verwendet, um den Text in ein Etikett einzuschließen. Wie wir sehen können, haben wir untergeordnete Knoten zu Region hinzugefügt, was unmöglich ist, daher sollte dieser Code einen Fehler auslösen.

Siehe Ausgabe:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at javafx.graphics@18.0.1/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
    at javafx.graphics@18.0.1/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)

Versuchen wir das gleiche Beispiel für Pane, wo wir untergeordnete Knoten zum Bereich hinzufügen können. Siehe Beispiel:

package delftstack;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFX_Reigon extends Application {
  public void start(Stage Label_Stage) {
    String Label_Text = "DelftStack is a resource for everyone interested in programming.";
    // Create a Label
    Label Demo_Label = new Label(Label_Text);
    // wrap the label
    Demo_Label.setWrapText(true);
    // Set the maximum width of the label
    Demo_Label.setMaxWidth(300);
    // Set the position of the label
    Demo_Label.setTranslateX(30);
    Demo_Label.setTranslateY(30);
    // Create a Pane
    Pane Label_Root = new Pane();
    // Add Children to Pane which will work properly
    Label_Root.getChildren().add(Demo_Label);
    // Set the stage
    Scene Label_Scene = new Scene(Label_Root, 595, 150, Color.BEIGE);
    Label_Stage.setTitle("Pane Example");
    Label_Stage.setScene(Label_Scene);
    Label_Stage.show();
  }
  public static void main(String args[]) {
    launch(args);
  }
}

Dieser Code wird gut funktionieren, da wir dem Bereich untergeordnete Knoten hinzufügen können. Siehe Ausgabe:

JavaFX-Pane

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java JavaFX