Javafx 在stackpane上设置内容,而不是使用可见和不可见

Javafx 在stackpane上设置内容,而不是使用可见和不可见,javafx,Javafx,我正在使用一个包含所有内容的窗格,我要做的是在单击“下一步”按钮时设置新内容。我可以为下一个内容使用“设置为不可见和可见”,但这不是我想要的,我想在stackpane中使用它,因此我在其和按钮中存储了一个图像。您可以将imageview对象添加到stackpane中,并在单击按钮时更改其中的图像 最新答案 如果你想删除当前内容并用新内容替换它,你可以这样做:stackPane.getChildren.removeyourObject,然后用stackPane.getChildren.AddNew

我正在使用一个包含所有内容的窗格,我要做的是在单击“下一步”按钮时设置新内容。我可以为下一个内容使用“设置为不可见和可见”,但这不是我想要的,我想在stackpane中使用它,因此我在其和按钮中存储了一个图像。

您可以将imageview对象添加到stackpane中,并在单击按钮时更改其中的图像

最新答案


如果你想删除当前内容并用新内容替换它,你可以这样做:stackPane.getChildren.removeyourObject,然后用stackPane.getChildren.AddNewObject添加你的新内容你有电子邮件或其他东西吗?我真的需要帮助,而且我是一个新手,所以我有一个图像和3-4个按钮,所以对象的名称在屏幕上按钮因此,当单击右按钮时,它将给分数打分,否则他们将不得不重试,因此右按钮将给分数并移动到下一个问题问题问题在哪里?这是图像吗?你能解释一下其他按钮的作用吗?你是否按下按钮,如果答案正确,你想显示一个新图像?更正此问题我想做的事情按钮也应该更改似乎你实际上可能在询问如何更改。我尝试使用堆栈窗格,但不起作用,因此我只使用了“设置可见为真/假”任何建议如何改进此问题在堆栈中究竟什么不起作用斯塔克潘?请记住,stackpane中的所有元素都居中,必须设置TranslateX和Y才能更改元素的位置。此外,ImageView不能设置为null,因此更改可见性是最佳解决方案。我已经用一个工作示例更新了我的答案,希望帮助更容易显示我的意思,如果您有电子邮件或团队查看器,我可以显示哪一个更容易基本上我所做的是用户画布在窗格上,图像/按钮在画布上,所以我设置为true/false如何将窗格更改为堆栈窗格?我要把窗格改成stackpane吗?你能发一个代码示例吗?这会让我更好地了解你在做什么,这个问题目前还很模糊。你有电子邮件吗?我可以把它发送给你,因为压缩文件更容易。或者我可以给你我的任何适合你的
@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();
    }