2016-07-07 7 views
2

私は別のJavaFX(モーダル)Stageを開き、元Stageとして、その所有者を設定する場合は、元のStage Windowsを使用して、サイズを変更することはできませんが、ウィンドウモーダルJavaFXのステージinitOwnerは、バグをリサイズから所有者を防ぎますか?

の右下隅にウィジェットドラッグIこれが確認されたJavaのバグである...ここ

最小限の例です
import javafx.stage.*; 
import javafx.scene.*; 
import javafx.event.*; 
import javafx.application.*; 
import javafx.scene.layout.*; 
import javafx.scene.control.*; 

public class HelloWorld extends Application 
{ 
    static Stage newStage; 

    @Override 
    public void start(Stage primaryStage) 
    { 
     Button btn = new Button(); 
     btn.setText("open window"); 
     btn.setOnAction(new EventHandler<ActionEvent>() 
     { 
      @Override 
      public void handle(ActionEvent event) 
      { 
       if (newStage==null) 
       { 
        Button newBtn = new Button("Close window"); 
        newBtn.setOnAction(new EventHandler<ActionEvent>() 
        { 
         @Override 
         public void handle(ActionEvent event) 
         { 
          //newStage.hide(); // either or 
          newStage.close(); 
         } 

        }); 
        newStage = new Stage(); 
        newStage.initModality(Modality.WINDOW_MODAL); 
        newStage.initOwner(primaryStage); // BUG doing this, makes main window fixed size 
        newStage.initStyle(StageStyle.DECORATED); 
        StackPane newRoot = new StackPane(); 
        newRoot.getChildren().add(newBtn); 
        Scene newScene = new Scene(newRoot,200,160); 
        newStage.setScene(newScene); 

       } 
       newStage.show(); 
      } 
     }); 

     StackPane root = new StackPane(); 
     root.getChildren().add(btn); 

     Scene scene = new Scene(root, 300, 250); 

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) 
    { 
     launch(args); 
    } 
} 
+0

説明のポイントとして、セカンダリウィンドウが閉じた後にメインウィンドウのサイズを変更することはできません。 –

+0

JavaFX8、jdk1.8.0_73、Windows7 - 問題ありません。 – DVarga

+0

jdk18.0_92、Windows 7は、ないバグ –

答えて

0

にLinuxではこれを見るが、自分のWindowsやMacOSのはとても他の場所でそれをテストすることはできませんしないでください。 Java 10での修正をターゲットにしているようです。誰かが1つを持っている場合、私は回避策をみたい、と述べた

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8140491

編集:それは醜いと私が見つけた1回避策は、あなたが非表示とモーダル子のステージを非表示にした後、所有者の段階を示すことができるということです。これにより、サイズ変更が可能になります。あなたは厄介である、しかし、ステージが消え、再び現れる参照してください。

関連する問題