我实际上已经开始学习JavaFX,但遇到了问题!
我有一个全屏Stage
,当我单击按钮时,我想在主要阶段打开一个新阶段!
但实际上,第二阶段直接在桌面上产生。
我不知道我在哪里失败或忘记了什么。如果有人可以帮助我或遇到相同问题的其他人,谢谢。
对不起,我用法语发表评论:/
public void start(Stage stage) throws FileNotFoundException {
//Chargement de l'image
Image image = new Image(new FileInputStream("res/spaceB.gif"));
ImageView imageView = new ImageView(image);
//Création du bouton
Button b = new Button();
// Rajout de l'image sur le boutton
b.setGraphic(new ImageView(new Image((new FileInputStream("res/play.png")))));
//Reduuit le boutton qu'a l'image
b.setFont(new Font(0));
//Taille boutton
b.setLayoutX(850);
b.setLayoutY(450);
/*---------------------------------------------------------------------------
* -------------------------------------------------------------------------
*/
b.setOnAction(e -> {
// FileChooserExample f = new FileChooserExample();
Stage s2 = new Stage();
Button choise = new Button("Choisir son fichier");
choise.setLayoutX(8);
choise.setLayoutY(45);
choise.setOnAction(e2 -> {
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialDirectory(new File("doc"));
File selectedFile = fileChooser.showOpenDialog(s2);
if(selectedFile != null) {
nom = selectedFile.getName();
}
});
Group g2 = new Group(choise);
Scene sc2 = new Scene(g2,600,500);
//Ajout nom et raccord de la scene au stage
s2.setTitle("File recorder ");
s2.setScene(sc2);
s2.show();
});
/*---------------------------------------------------------------------------
* -------------------------------------------------------------------------
*/
//Je possitionne l'image en 0/0
imageView.setX(0);
imageView.setY(0);
//Me permet d'avoir l'image en plein ecran (marche que pour l'IUT)
//Pas encore trouvé pour faire un fullscreen d'une imageview
imageView.setFitHeight(1950);
imageView.setFitWidth(1950);
//Garde le ratio de l'image et évite un gros zoom
imageView.setPreserveRatio(true);
//Creating a Group object
Group root = new Group(imageView, b);
Scene scene = new Scene(root, 600, 500);
//Ajout nom et raccord de la scene au stage
stage.setTitle("Bienvenue à SPACE-DUCK");
stage.setScene(scene);
//Met en plein écran le GIF et affiche
stage.setFullScreen(true);
stage.setResizable(true);
stage.setAlwaysOnTop(true);
stage.show();
}
答案 0 :(得分:2)
Bonjour Nekolas,
您的情况不是错误。为了使您的阶段出现在主要阶段中,您必须在这两个实例之间创建依赖关系:stage
必须是s2
的 owner 。您可以通过以下命令来实现它:
s2.initOwner(stage);
在命令s2.show()
之前。
我已经用随机图片测试了您的代码,并且可以正常工作:
主界面,中间有一个小的PLAY按钮
按下播放按钮
J'espèrequeçat'aidera:)
答案 1 :(得分:0)
也许是一个错误。 试试这个:
添加
s2.setAlwaysOnTop(true);
替换
stage.setFullScreen(true); -> stage.setMaximized(true);