2017-11-24 1 views
0

Dieses Problem bezieht sich auf JavaFX (jdk-9.0.1) auf MacOS (ich laufe Sierra). Ich entwickle eine x-Plattform-Desktop-App mit einem veränderbaren Hauptfenster primaryStage.setResizable(true), nachdem ich den kleinen grünen Knopf, see picture below geklickt habe, um in den Vollbildmodus und dann wieder zurück in den normalen Modus zu gelangen, ist die Größenanpassung des Fensters nicht mehr möglich . Wie kann ich die Größe ändern, nachdem ich vom Vollbildmodus auf MacOS zurückgekehrt bin? Es funktioniert unter Windows und Linux, aber nicht unter MacOS. Jede Hilfe wird sehr geschätzt.Wie man das Hauptjavafx-Fenster noch in der Größe veränderbar macht, kommt aus dem Vollbildmodus in MacOS zurück

screenshot maximize button in macos

Edit 1: Das Problem wird jetzt berichtet und sichtbar auf bugs.java.com unter der folgenden URL JDK-8191885

Antwort

0

Danke mipa! Ich entdeckte, dass es sogar besser ist, einen Listener zu der fullScreenProperty() hinzuzufügen, dann müssen Sie nicht in die Titelleiste klicken und es ein paar Pixel verschieben. Der Schlüssel war, setResizable(false) zu tun, gefolgt von setResizable(true) obwohl, danke für das Herausfinden. Ich werde mit dieser Problemumgehung gehen, bis der Fehler behoben ist:

primaryStage.fullScreenProperty().addListener((v,o,n) -> { 

     if (!primaryStage.isFullScreen()) { 

      primaryStage.setResizable(false); 
      primaryStage.setResizable(true); 
     } 
    }); 
+0

Großartig, Ihr Vorschlag funktioniert auch für mich. – mipa

0

Dies wie ein Fehler in JavaFX aussieht. Ich kann dieses Verhalten mit JDK9 und 10ea reproduzieren. Es scheint aber immer noch für das neueste JDK8 zu funktionieren. Ich habe noch kein Workarround gefunden. Sie sollten dies unter http://bugreport.java.com/

melden
+0

Ok, danke. Will do ... – jbilander

+0

Der Link zum Fehlerbericht: https://bugs.openjdk.java.net/browse/JDK-8191885 – mipa

0

Da es nicht einmal geplant ist, diesen Bug vor Java 11 zu beheben, müssen wir wahrscheinlich noch eine ganze Weile damit leben. Ich habe daher versucht, eine Art von Workarround dafür zu finden und hier ist es:

Fügen Sie dies oder etwas ähnliches zu Ihrem Code.

primaryStage.maximizedProperty().addListener((v,o,n) -> { 
    primaryStage.setResizable(false); 
    primaryStage.setResizable(true); 
}); 

Sobald Sie de-maximiert Ihre Bühne über die grüne Taste, um das einzige, was Sie noch manuell tun müssen, ist in der Titelleiste Ihres Bühne klicken und es für ein paar Pixel zu bewegen. Danach sollte die Bühne wie gewohnt mit der Maus skalierbar sein. Es ist ein hässlicher Hack, aber immer noch besser, als für immer mit diesem Virus leben zu müssen.

+0

Vielen Dank, entdeckte ich, dass es noch besser war, einen Listener zu der fullScreenProperty hinzuzufügen (), die aufgerufen wird, wenn Sie wieder in den normalen Bildschirmmodus zurückkehren. – jbilander

Verwandte Themen