2016-04-02 10 views
1

Ich habe eine FXML mit einem GridPane von 8 Zeilen definiert ist, die die folgenden Komponenten enthalten (FXML und CSS-Definitionen werden am Ende dieses Gewindes angegeben):JavaFX: Node Wiedergröße funktioniert nicht wie erwartet

  • 2 Checkbox,
  • 2 Labels,
  • 2 Etikett mit einer Region und
  • 2 Tasten mit einer Region

Die Region hier t verwendet wird, Laden Sie Bilder, die über einen CSS-Stil erstellt wurden. Für jeden Satz der oben definierten Komponenten (zum Beispiel die 2 Checkboxen), nehme ich den einen und ich vergrößere seine Größe, indem ich das -fx-font-size Styling verwende. Insbesondere definiere ich die Schriftgröße zu "1.3xDefault_System_Font_Size (12)". Die Tags (INC) und (DEF) im Text jeder Komponente werden verwendet, um zu beschreiben, ob die Schriftgröße erhöht oder auf den Standardwert zurückgesetzt wird.

enter image description here

Wie Sie aus dem obigen Screenshot sehen können, wird das Etikett von Checkbox erhöht, aber die Box selbst nicht. Das gleiche gilt für die Bilder, dass ihre Größe nicht zugenommen hat, aber die Etikettengröße.

Dies wird noch schlimmer, wenn ich die Standard-Schriftgröße in .root ändern:

.root{ 
    -fx-font-size: 28; 
} 

Im Beispiel oben, da ich die Standard-Schriftgröße von 12 bis 28 geändert, erwarte ich, dass alle Etiketten und Bilder ändern ihre Größe nach dieser neuen Größe. Die Bildgröße wird durch die -fx-Hintergrundgröße definiert, die 4em ist.

Allerdings werden alle Beschriftungen korrekt vergrößert, aber die Bilder werden nur auf den Knoten mit dem Tag DEF korrekt vergrößert. Das gleiche gilt für das Kontrollkästchen, wo es Label und Box auf dem DEF erhöht ist, während der mit dem Tag nur Etikettgröße korrekt erhöht und die Box klein blieb.

enter image description here

Gibt es eine Möglichkeit, Bilder und Schachtel Kontrollkästchen, um ihre Größe korrekt zu erhöhen? Ist das ein Fehler, oder mache ich etwas falsch?

FXML: Gridpane

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.geometry.Insets?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.CheckBox?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.layout.ColumnConstraints?> 
<?import javafx.scene.layout.GridPane?> 
<?import javafx.scene.layout.Region?> 
<?import javafx.scene.layout.RowConstraints?> 

<GridPane stylesheets="@css/Test.css" vgap="5.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ebay.client.controller.SettingsScreenController"> 
    <children> 
     <CheckBox nodeOrientation="RIGHT_TO_LEFT" styleClass="increased_font" text="CheckBox (Inc)" GridPane.rowIndex="1" /> 
     <CheckBox nodeOrientation="RIGHT_TO_LEFT" text="CheckBox (Def)" GridPane.rowIndex="2" /> 
     <Label cache="true" styleClass="increased_font" text="Label (Inc)" GridPane.rowIndex="3" /> 
     <Label cache="true" text="Label (Def)" GridPane.rowIndex="4" /> 
     <Label cache="true" styleClass="increased_font" text="Label With Image (Inc)" GridPane.rowIndex="5"> 
      <graphic><Region styleClass="javasuns_logo" /></graphic> 
     </Label> 
     <Label cache="true" text="Label With Image (Def)" GridPane.rowIndex="6"> 
      <graphic><Region styleClass="javasuns_logo" /></graphic> 
     </Label> 
     <Button styleClass="increased_font" text="Button With Image (Inc)" GridPane.rowIndex="7"> 
      <graphic><Region styleClass="javasuns_logo" /></graphic> 
     </Button> 
     <Button text="Button With Image (Def)" GridPane.rowIndex="8"> 
      <graphic><Region styleClass="javasuns_logo" /></graphic> 
     </Button> 
    </children> 
</GridPane> 

CSS: test.css

.increased_font { 
    -fx-font-size: 1.3em; 
} 

.javasuns_logo { 
    -fx-font-size: null; 
    -fx-pref-height: 2em; 
    -fx-pref-width: 4em; 
    -fx-background-image: url('../../icons/logo/javasuns.png'); 
    -fx-background-size: 4em; 
    -fx-background-repeat: no-repeat; 
    -fx-background-position: center; 
} 

Antwort

0

Ich weiß, es ist eine alte Frage, aber ich bin jetzt auch mit diesem Recht zu kämpfen. Was ich gefunden habe ist, dass wenn Sie pref-height und pref-width verwenden, nicht -fx-font-size in derselben Klasse verwendet werden kann, weil es die .root -fx-font-size auf den Standardwert 12 "zurücksetzt" .

Ich wollte bestimmte Schriftgröße in einigen Schaltflächen festlegen sowie die Breite und Höhe mit den em-Werten festlegen. Es war nicht möglich, also habe ich ein Label im Element von Button erstellt und hier kann ich die Schriftgröße des Labels korrekt anpassen. Also, wenn ich nicht die Schriftgröße und -breite/-höhe in derselben Klasse/demselben Steuerelement verwende, sieht es so aus, als würde es funktionieren.