在stackpane上设置内容而不是使用visible和invisible

时间:2015-08-29 17:56:41

标签: javafx

我正在使用一个窗格,其中包含我想要做的所有内容,即在单击下一个按钮时设置新内容。我可以使用set invisible和visible来显示下一个内容,但这不是我想要的,我希望在stackpane中有它,所以我有一个图像存储在他们和按钮中。

1 个答案:

答案 0 :(得分:0)

您可以将imageview对象添加到堆栈窗格中,并在单击按钮时更改图像。

更新的答案

@Override
    public void start(Stage primaryStage) {
        Button btn = new Button("One");
        Button btn2 = new Button("Two");
        btn2.setTranslateX(btn.getTranslateX() + 60);
        Image img1 = new Image ("https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Thumbs_up_font_awesome.svg/512px-Thumbs_up_font_awesome.svg.png");
        Image img2 = new Image ("https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/512/thumbs_down.png");

        Image loadImg = new Image("http://www.ledr.com/colours/white.jpg");
        ImageView imgHolder = new ImageView(loadImg);
        imgHolder.setVisible(false);
        imgHolder.setFitHeight(100);
        imgHolder.setFitWidth(100);
        //Offset stackapane
        imgHolder.setTranslateY(-80);

        Random rand = new Random();


        btn.setOnAction(e->{
        int randomNum = rand.nextInt(10) + 1;
        imgHolder.setVisible(true);
        if(randomNum % 2 == 0){

               imgHolder.setImage(img1);
           } 
           else{
            imgHolder.setImage(img2); 
           }
        });
        //Repeat action for btn2

        StackPane root = new StackPane();
        root.getChildren().addAll(btn,btn2,imgHolder);
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();
    }