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,沒有錯誤 –