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);
}
}
作为一个澄清点,主窗口无法调整后,辅助窗口关闭.... –
JavaFX8,jdk1.8.0_73,Windows7 - 没有问题。 – DVarga
jdk18.0_92,Windows 7,没有错误 –