2016-07-07 101 views
2

如果我打开另一个JavaFX的(模式)Stage,并设置其所有者为原始Stage,那么原来的Stage不能调整大小,使用windows窗口modal JavaFX阶段initOwner防止所有者调整大小,bug?

我的右下角拖动小工具看到这个Linux,但没有自己的Windows或者MacOS因此无法在其他地方进行测试......

这里是一个小例子,

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

这是确认的Java的错误。看起来它的目标是在某个时候修复Java 10。

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

这就是说,我很想一个解决办法,如果有人有一个。

编辑:我发现的一个解决方法,就是这样丑陋,就是隐藏模态子阶段后隐藏并显示所有者阶段。这可以重新调整大小。不过,你看到舞台消失并重新出现,这很凌乱。