首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - Scene1没有显示,相同的Scene2工作

Java - Scene1没有显示,相同的Scene2工作
EN

Stack Overflow用户
提问于 2016-10-25 15:40:16
回答 1查看 30关注 0票数 0

我很难理解为什么这段代码不能工作。没有编译错误。

scene2正如我所期望的那样绘制。两个场景中的按钮都能工作。Scene1不会显示这些图像。虽然它与scene2完全相同,但确实有效。问题似乎与scene1有关。

如果我改变了这一行

代码语言:javascript
复制
primaryStage.setScene(scene1);

代码语言:javascript
复制
primaryStage.setScene(scene2);

Scene2再次工作,但是scene1坏了,只显示了按钮。这似乎再次指出,scene1对象是问题所在?

任何帮助指出显而易见的将不胜感激。

代码语言:javascript
复制
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;

import java.util.Scanner;


public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        Button button = new Button();
        Button button1 = new Button();

        button.setText("Start Games");
        button1.setText("Quit game");

        Image displayedimg = new Image("old_four_finger.png");
        Image displayedimg2 = new Image("edelen_tree_srv.png");

        ImageView iv1 = new ImageView();
        iv1.setImage(displayedimg);

        ImageView iv2 = new ImageView();
        iv2.setImage(displayedimg2);

        Group root1 = new Group();
        HBox layout1 = new HBox();
        Scene scene1 = new Scene(root1);
        layout1.setStyle("-fx-background-color: #00ff00;");
        layout1.getChildren().add(button);
        layout1.getChildren().add(iv1);
        layout1.getChildren().add(iv2);
        root1.getChildren().add(layout1);

        Group root2 = new Group();
        HBox layout2 = new HBox();
        Scene scene2 = new Scene(root2);
        layout2.setStyle("-fx-background-color: #00ff00;");
        layout2.getChildren().add(button1);
        layout2.getChildren().add(iv1);
        layout2.getChildren().add(iv2);
        root2.getChildren().add(layout2);

        // Set our button(s) clickable actions
        button.setOnAction(e -> {
            primaryStage.setScene(scene2);
        });
        button1.setOnAction(e -> {
            primaryStage.setScene(scene1);
        });

        primaryStage.setScene(scene1);
        primaryStage.show();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 18:04:21

元素(在本例中是ImageViews)只能有一个父元素。当你使用

代码语言:javascript
复制
layout1.getChildren().add(iv1);

然后将IV1的父级设置为layout1。但当你做的时候

代码语言:javascript
复制
layout2.getChildren().add(iv2);

然后将IV1的父级设置为layout2,从而将其从layout1中删除。如果根据使用哪个场景动态地设置iv1,则尝试设置父场景。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40244198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档