2016-10-25 3 views
0

このコードが機能しない理由を確認するのに苦労しています。コンパイルエラーはありません。Java - シーン1が表示されない、同一のScene2が動作する

scene2は私が期待したとおりに描かれています。両方のシーンのボタンが機能します。シーン1は画像を表示しません。シーン2と同じですが、動作します。問題はシーン1と思われる。

私はSCENE2

primaryStage.setScene(scene2); 

にこのライン

primaryStage.setScene(scene1); 

を変更する場合は、再度ボタンのみの上映と、動作しますが、SCENE1が壊れています。再びこれは、scene1オブジェクトが問題であることを指摘しているようです。

明白なことを指摘する助けに感謝します。

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(); 
    } 
} 

答えて

1

要素(この場合ImageView S)のみ1人の親を持つことができます。使用する場合

layout1.getChildren().add(iv1); 

次に、iv1の親をlayout1に設定します。あなたは

layout2.getChildren().add(iv2); 

を行うときしかし、その後、あなたは、このようにlayout1から削除し、LAYOUT2するIV1の親を設定します。 iv1がどのシーンが使用されているかに基づいて動的に設定すると、親を設定してみてください。

関連する問題