JavaFX AnchorPane resizen, aber wie?

Tom299

Bekanntes Mitglied
Hi,

ich hab meine Screens alle mit AnchorPane's gebaut, weil ich da sehr einfach und schnell positionieren kann. Bis gestern hatte ich aber noch kein resize versucht.
Leider tut sich beim resize rein gar nix, der Screen wandert einfach in der urspünglichen Größe in die linke obere Ecke anstatt daß die AnchorPane maximiert wird.
Ich hab schon bei stackoverflow nach Lösungen gesucht, aber gebracht hat es bei mir nichts.

Hier mal mein FXML, vielleicht sieht jemand, was fehlt oder falsch eingestellt ist (Ist der Login-Screen, der hat die wenigsten Komponenten):
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane id="ctrlLogin" fx:id="ctrlLogin" maxHeight="-1.0" maxWidth="-1.0" minHeight="60.0" minWidth="80.0" prefHeight="600.0" prefWidth="800.0" stylesheets="@styles/login.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.temeka.prokal.berichte.controller.LoginController">
   <children>
      <GridPane hgap="5.0" layoutX="232.0" layoutY="300.0" vgap="7.0">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="110.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="110.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="3.0" prefHeight="3.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Label GridPane.columnSpan="3" GridPane.halignment="LEFT">
               <font>
                  <Font name="Arial Bold" size="18.0" />
               </font>
            </Label>
            <Label text="Benutzername" GridPane.rowIndex="1">
               <font>
                  <Font name="Arial" size="14.0" />
               </font>
            </Label>
			<ComboBox fx:id="cboBenutzer" editable="true" prefHeight="30.0" prefWidth="205.0" promptText="Bitte wählen ..." GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" />            
            <Label text="Kennwort" GridPane.rowIndex="2">
               <font>
                  <Font name="Arial" size="14.0" />
               </font>
            </Label>
            <PasswordField fx:id="pwdKennwort" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="2">
               <font>
                  <Font name="Arial" size="14.0" />
               </font>
               <GridPane.margin>
                  <Insets right="20.0" />
               </GridPane.margin>
            </PasswordField>
            <Button fx:id="btnCancel" cancelButton="true" mnemonicParsing="false" onAction="#doCancel" prefWidth="90.0" text="Abbrech" GridPane.columnIndex="1" GridPane.rowIndex="4">
               <font>
                  <Font name="Arial" size="14.0" />
               </font>
            </Button>
            <Button fx:id="btnLogin" defaultButton="true" mnemonicParsing="false" onAction="#doLogin" prefWidth="90.0" text="Login" GridPane.columnIndex="2" GridPane.rowIndex="4">
               <font>
                  <Font name="Arial" size="14.0" />
               </font>
            </Button>
         </children>
      </GridPane>
      <ImageView fitHeight="240.0" fitWidth="310.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="391.0" AnchorPane.leftAnchor="232.0" AnchorPane.rightAnchor="258.0" AnchorPane.topAnchor="54.0">
         <image>
            <Image url="@../images/javafx.png" />
         </image>
      </ImageView>
   </children>
</AnchorPane>

PrefWidth und PrefHeight sind auf 800*600 eingestellt. Das hab ich auch schon testweise geändert, hat aber auch keine Auswirkungen aufs resize gehabt, nur daß der Screen dann unbrauchbar aussieht.

Ich dachte eigentlich, die AnchorPane ist schlauer als das Null-Layout bei Swing. Hoffe ich habe mich da nicht getäuscht und muß alle Screens mit einem anderen Layout umbauen?

Hier 3 Screenshots mit normal (800*600) und dann etwas größer und etwas kleiner gezogen:
Test_Normal.png
Test_Resize.png
Test_Resize2.png

Gruß Tom
 

Tom299

Bekanntes Mitglied
Ich hab zwar rausgefunden, wie ich im Code manuell resizen kann, aber das ist ja mühseelig und kann nicht Sinn der Sache sein:

Beispiel-Resize:
Code:
		ctrlLogin.layoutBoundsProperty().addListener(new ChangeListener<Bounds>() {
			public void changed(javafx.beans.value.ObservableValue<? extends Bounds> observable, Bounds oldValue, Bounds newValue) {
				//System.out.println(newValue.getWidth() + "x" + newValue.getHeight());
				AnchorPane.setTopAnchor(gridPane, newValue.getHeight()*300/600);
				AnchorPane.setBottomAnchor(gridPane, newValue.getHeight()*150/600);
				AnchorPane.setLeftAnchor(gridPane, newValue.getWidth()*232/800);
				AnchorPane.setRightAnchor(gridPane, newValue.getWidth()*238/800);
				
				AnchorPane.setTopAnchor(ivLogo, newValue.getHeight()*54/600);
				AnchorPane.setBottomAnchor(ivLogo, newValue.getHeight()*313.5/600);
				AnchorPane.setLeftAnchor(ivLogo, newValue.getWidth()*232/800);
				AnchorPane.setRightAnchor(ivLogo, newValue.getWidth()*258/800);
			};
		});
 

dzim

Top Contributor
Ich würde dir gern helfen, aber ich hab - um ehrlich zu sein - noch nie AnchorPanes verwendet, sondern setze immer auf VBox, HBox, BorderPane, SplitPane, ScrollPane, StackPane, FlowPane und GridPane.
Ich denke, AnchorPane funktioniert gut innerhalb eines anderen Layouts, wenn du es eben gut an anderen Nodes verankern kannst. Bzw. denke ich nicht, dass es praktisch ist, mit absoluten Zahlenwerten zu arbeiten.
Ich würde in deinem Bsp. Wohl ein GridPane als root wählen und darin evtl. mit Column-/RowSpan arbeiten...
 

Tom299

Bekanntes Mitglied
Also ich hatte in meiner 1. View sogar das GridPan verwendet, aber ich finde es viel umständlicher beim Anordnen als mit dem AnchorPane.

Mir war aber aufgefallen, daß mein "ScreenManager" scheinbar daran Schuld war, daß gar keine View resized wurde. Hab mir einen anderen geschrieben und damit funzt zumindest mal das resize generell.

AnchorPane hab ich jetzt auch richtig verstanden bzw. beim testen rausgefunden. Ich dachte, ich hätte in den JavaDocs gelesen, daß die AnchorPane die Abstände relativ zum Ausgangslayout hoch- oder runterrechnet. Also z.B. bei TopAnchor = 50.0 dachte ich, daß beim resize die 50.0 auf z.B. 100.0 hochgerechnet wird, wenn ich die Höhe verdoppele. Doch genau das passiert nicht, er behält immer genau die 50.0 bei. Deswegen konnte ich z.B. den Login-Screen nicht automatisch zentrieren lassen, sondern da ich AnchorLeft und Top angegeben habe, hält die AnchorPane diese Werte bei.

Wo es aber gut funktoniert ist z.B. bei einer TableView oder einem Button-Panel im oberen oder unteren Bereich. Da gibt man die Top und Bottom Anchors an bzw. beim ButtonPanel nur Bottom und Right z.B. und dann sieht das auch anständig aus. Nur wenn man viele Eingabefelder und Labels hat, bekommt man Probleme.

Also so wie es aussieht muß ich ein paar Views umbauen, aber zum Glück nicht alle :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin AnchorPane setBottomAnchor AWT, Swing, JavaFX & SWT 6
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
berserkerdq2 Anchorpane warum kann ich nicht Anchors setzen AWT, Swing, JavaFX & SWT 6
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
L Java FX Scrollpane automatisch resizen AWT, Swing, JavaFX & SWT 3
R TriangleMesh verschwindet teilweise beim resizen des Frames, sowie beim rotieren? AWT, Swing, JavaFX & SWT 1
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
D JTable Columns wollen einfach nicht resizen AWT, Swing, JavaFX & SWT 5
R Swing Per Maus JLabel resizen AWT, Swing, JavaFX & SWT 6
C SWT-Elemente an View-Fenster angleichen und automatisch resizen AWT, Swing, JavaFX & SWT 3
xehpuk Swing Resizen eines JFrames nur relativ zulassen AWT, Swing, JavaFX & SWT 5
D Undecorated JFrame ohne Flackern resizen AWT, Swing, JavaFX & SWT 21
H Swing JWindow flackert beim resizen AWT, Swing, JavaFX & SWT 6
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
T JFrame resizen AWT, Swing, JavaFX & SWT 4
S Tabelle soll sich auch in der Höhe resizen? AWT, Swing, JavaFX & SWT 4
S Seitenverhältnis behalten beim Fenster resizen AWT, Swing, JavaFX & SWT 2
V Nulllayout und wie auf Resizen reagieren? AWT, Swing, JavaFX & SWT 4
T Probleme beim Resizen einer JScrollPane AWT, Swing, JavaFX & SWT 2
S SWT nur gleichzeites Resizen AWT, Swing, JavaFX & SWT 3
N JSplitPane soll JFrame resizen AWT, Swing, JavaFX & SWT 4
G Flimmern beim Resizen AWT, Swing, JavaFX & SWT 2
U Was ist ein Shape, also klar ein Objekt, aber was ist damit gemeint (Graphics2d)? Und was sidn affinetransformationen AWT, Swing, JavaFX & SWT 1
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
G JavaFX , Duplicate erzeugt aber ich weis nicht wo AWT, Swing, JavaFX & SWT 4
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
J Warum kann ich die Spaltennummer in der Konsole anzeigen, diese aber nicht speichern ? AWT, Swing, JavaFX & SWT 6
J Injection - Aber Controller sind null AWT, Swing, JavaFX & SWT 3
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
X JavaFX Einfache FX Application, aber wie alte Features umgehen? AWT, Swing, JavaFX & SWT 10
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
K Swing Textfeld verstecken aber benutzen AWT, Swing, JavaFX & SWT 15
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
P jtabel Zeilen auswählbar, aber nicht editierbar AWT, Swing, JavaFX & SWT 3
D Passwort [Aber mit 3 Versuchen] Funktioniert nicht wie erwartet AWT, Swing, JavaFX & SWT 4
A Swing Koordinatensystem wird gezeichnet verschwindet aber und die Einteilungen bleiben nicht bestehen AWT, Swing, JavaFX & SWT 5
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
wolfgang63 JavaFX Transparenter Hintergrund aber sichtbare Buttons AWT, Swing, JavaFX & SWT 6
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
X AWT Graphics2D zum LWJGL Display hinzufügen aber wie? AWT, Swing, JavaFX & SWT 4
V kann ich in einer Klasse stage und scene deklarieren, aber in anderen Klassen Inhalte hinzufügen ? AWT, Swing, JavaFX & SWT 5
N Programm läuft perfekt in Eclipse aber nicht in .JAR AWT, Swing, JavaFX & SWT 3
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
TheJavaKid JFrame defokusieren aber im Vordergrund behalten AWT, Swing, JavaFX & SWT 0
brunothg Swing JTable -> AUTO_RESIZE_OFF aber das Fenster ausfüllen AWT, Swing, JavaFX & SWT 0
J JFrame maximierbar aber nicht resizable AWT, Swing, JavaFX & SWT 6
D JTable markier- aber nicht veränderbar AWT, Swing, JavaFX & SWT 10
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
O getValueAt liefert "", aber es wird was angezeigt AWT, Swing, JavaFX & SWT 12
S JTable Zellinhalt markierbar aber nicht editierbar AWT, Swing, JavaFX & SWT 4
V Swing Wochenplaner in Swing erstellen! Aber wie? AWT, Swing, JavaFX & SWT 13
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
L SWT Drop erfolgreich, aber GUI-Aktion abgebrochen AWT, Swing, JavaFX & SWT 4
G Swing resizeable aber nur y-Achse nur wie? AWT, Swing, JavaFX & SWT 5
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
N Swing JSpinner mit Datum aber ohne Uhrzeit AWT, Swing, JavaFX & SWT 2
propra Doppelklick von Einzelklick unterscheiden, aber richtig ... AWT, Swing, JavaFX & SWT 10
J Swing JTable: Komplette Zeile aber ohne Spalten markieren AWT, Swing, JavaFX & SWT 11
T speichern funktioniert,aber öffnen nicht AWT, Swing, JavaFX & SWT 2
C JFrame ohne Titelleiste, aber mit Borders AWT, Swing, JavaFX & SWT 2
M Fenster aufteilen, aber mit welchem LayoutManager? AWT, Swing, JavaFX & SWT 10
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
M Swing MVC Pattern verstanden, aber Probleme bei der Umsetzung AWT, Swing, JavaFX & SWT 5
S Bilddatei kopieren, aber ohne verluste und ohne zu großen Speicherverbrauch AWT, Swing, JavaFX & SWT 17
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
S Swing Grundprinzip String ausgeben, aber wie? AWT, Swing, JavaFX & SWT 6
J Swing JCheckBox enabled, aber graues Kästchen AWT, Swing, JavaFX & SWT 2
F Bild auf JPanel, aber wie? AWT, Swing, JavaFX & SWT 6
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
G SWT-App läuft nicht unter OSX, unter Win aber problemlos AWT, Swing, JavaFX & SWT 3
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
L Swing Serverbrowser, aber welche componenten? AWT, Swing, JavaFX & SWT 2
F In Textfeld Kommazahl anzeigen aber ohne Komma eingeben AWT, Swing, JavaFX & SWT 14
T JTable: editieren bei Doppelklick deaktivieren, aber... AWT, Swing, JavaFX & SWT 2
data89 PopUp-Panel bauen - aber wie? AWT, Swing, JavaFX & SWT 2
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
T JSpinner, 3 JSpinner aber nur ein SpinnerDateModel AWT, Swing, JavaFX & SWT 7
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
O Transparenz mit AWTUtilities aber nur das Fenster nicht die Buttons AWT, Swing, JavaFX & SWT 8
E Layout, aber welches? AWT, Swing, JavaFX & SWT 8
E Starten meiner GUI, aber wie? AWT, Swing, JavaFX & SWT 7
Developer_X Swing IndexOutOfBoundsException, aber warum?! AWT, Swing, JavaFX & SWT 15
Pithecanthropus [gelöst] JTree, aber nicht mit Strings, sondern mit Objects? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben