JavaFX AnchorPane an die Größe der Scene oder Window binden?

lam_tr

Top Contributor
Guten morgen zusammen,

ich habe das Problem dass bei den Controls, wenn ich in der IDE starte sind die normal (JDK1.8.0.60) und wenn ich als jar exportiere und starte sind die etwas größer (JRE1.8.0.140). Vermutlich liegt das an der Java Version.

Wie geht man da am Besten vor? Da mir alles zu groß vorkommt, habe ich zwei Buttons zum Hoch und runterskalieren gemacht. Leider weiß ich nicht wie ich die Grüße der Pane beibehalten kann.

Ich habe in der Start Klasse so gemacht
Code:
   @Override
    public void start(Stage primaryStage) throws Exception {
        Region root = controlRegistry.get("MainForm");
        Scene stage = new Scene(root, 1400, 1000);
        root.prefWidthProperty().bind(primaryStage.widthProperty());
        root.prefHeightProperty().bind(primaryStage.heightProperty());

        primaryStage.setScene(stage);
        primaryStage.show();
    }

Und in der MainForm Controller die Methode zum Skalieren

Code:
    public void onButtonAction(ActionEvent e) {
        if (e.getSource() == buttonScaleDown) {
            mainPage.setScaleX(mainPage.getScaleX() - 0.05);
            mainPage.setScaleY(mainPage.getScaleY() - 0.05);
        } else if (e.getSource() == buttonScaleUp) {
            mainPage.setScaleX(mainPage.getScaleX() + 0.05);
            mainPage.setScaleY(mainPage.getScaleY() + 0.05);
        }
    }

soll ich da erneut ein prefWidth und prefHeight setzen? Das binden hat leider nicht funktioniert.

Grüße
lam
 
Als erstes eine Frage: Warum verwendest du ein nicht mehr unterstützes und veraltetes Java? Aktuell ist im Java 8 8u231 (das auch - iirc - einige Updates, bzw. Backports vom aktuellen OpenJFX erhalten hat). Noch besser wäre Java 11, 12 oder 13 mit der korrespondieren JavaFX-Version zu verwenden.
Und daher: ja, es kann sein, dass sich bei verschiedenen Versionen das UI leicht anders verhält (HiDPI Scaling, angepasster Default-Theme, etc.)

Was dein Problem angeht. kA ohne selbst mal wieder damit zu spielen. Mache im Moment nicht so viel JavaFX, wie ich gern würde.
Anregungen:
  1. https://github.com/tom91136/GestureFX - library zum Skalieren von beliebigen Nodes
  2. https://www.javatpoint.com/javafx-scaling - Tutorial 1
  3. https://www.tutorialspoint.com/javafx/scaling_transformation.htm - Tutorial 2
Schau mal, ob dir da was helfen kann.
 
Ahh stimmt, nachdem skalieren habe ich gar nicht daran gedacht die Panel zum Ursprung zuverschieben, das könnte eventuell helfen.

Vielen Dank!

Zu Hause benutze ich auch schon die neuste Java 8 Version, aber hier im Büro stehen wir immer noch auf der alten Version.

Ich habe ein bisschen mit OpenJDK und OpenJFX 11 gespielt, aber irgendwie klappt das nicht immer in Eclipse reibungslos laufen zu lassen und wenn es mal läuft, dass ich es gescheit als Jar exportieren kann.
 
Als erstes eine Frage: Warum verwendest du ein nicht mehr unterstützes und veraltetes Java? Aktuell ist im Java 8 8u231 (das auch - iirc - einige Updates, bzw. Backports vom aktuellen OpenJFX erhalten hat). Noch besser wäre Java 11, 12 oder 13 mit der korrespondieren JavaFX-Version zu verwenden.
Und daher: ja, es kann sein, dass sich bei verschiedenen Versionen das UI leicht anders verhält (HiDPI Scaling, angepasster Default-Theme, etc.)

Was dein Problem angeht. kA ohne selbst mal wieder damit zu spielen. Mache im Moment nicht so viel JavaFX, wie ich gern würde.
Anregungen:
  1. https://github.com/tom91136/GestureFX - library zum Skalieren von beliebigen Nodes
  2. https://www.javatpoint.com/javafx-scaling - Tutorial 1
  3. https://www.tutorialspoint.com/javafx/scaling_transformation.htm - Tutorial 2
Schau mal, ob dir da was helfen kann.
Ich habe gestern deinen Rat befolgt und mir OpenJFX 13 mit OpenJdk 12 (Leider ist der Support von 13 noch nicht sp brickelnd, e.g. Gradle OpenJFX.Plugin ) angeschaut. Jetzt tuts alles 🙂

Gradle macht schon alles für mich. Ich musste nur aufpassen gegen welches JDK gradle kompiliert.

Vor allem für die Paketierung ist JLink schon klasse. Gefällt mir 🙂
 

Neue Themen


Zurück
Oben