首页 > 解决方案 > 使用 JavaFX 未出现图像,如何调用它

问题描述

使用 JavaFX 在 Dice Simulator 上工作,一切正常,但是没有显示与每个数字对应的实际 Die 图像。我确实复制了图像路径,但在测试时没有显示任何内容,甚至尝试将图像导入包中以使用Image pic1 = new Image("file: Die1.bmp");但没有运气一起调用它,所以我开始认为这可能是变量名或方法的另一个问题?这是我的代码:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import java.util.Random;
import javafx.geometry.Insets;

public class TaskB extends Application {
    private ImageView viewDie1=new ImageView();
    private ImageView viewDie2=new ImageView();
    private Label resultRoll;
    private Label intro;
    private Label begin;

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Dice Simulator");
        intro=new Label("Welcome to the Dice Simulator!");
        begin=new Label("Click \"Roll!\" to roll a pair of dice");

        resultRoll=new Label();
        Button startRoll=new Button("Roll!");

        startRoll.setOnAction(new StartButtonHandler());
        HBox hbox=new HBox(10, viewDie1, viewDie2);

        VBox vbox=new VBox(20,intro, begin, startRoll, hbox, resultRoll);
        vbox.setPadding(new Insets(15));
        vbox.setAlignment(Pos.CENTER);

        Scene simulatorScene=new Scene(vbox);
        primaryStage.setScene(simulatorScene);
        primaryStage.show();
    }

    class StartButtonHandler implements EventHandler<ActionEvent>{
        @Override
        public void handle(ActionEvent event){
                    int num1=0;
                    int num2=0;
                    Image dieImage1;
                    Image dieImage2;

                    DieRoll dieI=new DieRoll();
                    DieRoll dieII=new DieRoll();
                    dieI.roll();
                    dieII.roll();
                    num1=dieI.getRoll();
                    num2=dieII.getRoll();

                    DieImages image1 = new DieImages();
                    DieImages image2 = new DieImages();
                    image1.setImage(num1);
                    image2.setImage(num2);
                    dieImage1 = image1.getImage();
                    dieImage2 = image2.getImage();

                    viewDie1 = new ImageView(dieImage1);
                    viewDie2 = new ImageView(dieImage2);

                    resultRoll.setText("You rolled a " + num1 + " and " + num2 + "!");
           }
        }
        public class DieRoll{
            int rollNum;
            int sides = 6;

            public void roll(){
                Random rand = new Random();
                rollNum = rand.nextInt(sides) + 1;
            }
            public int getRoll(){
                return rollNum;
            }
        }
        public class DieImages {
            Image pic1 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die1.bmp");
            Image pic2 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die2.bmp");
            Image pic3 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die3.bmp");
            Image pic4 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die4.bmp");
            Image pic5 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die5.bmp");
            Image pic6 = new Image("file: C:\\Users\\sandr\\Documents\\NetBeansProjects\\TaskB\\Die\\Die6.bmp");

            private int value;
            private Image dieImage=pic1;

            public void setImage(int sides){
                int value = sides;
                if(value == 1)
                    dieImage = pic1;
                if(value == 2)
                    dieImage = pic2;
                if(value == 3)
                    dieImage = pic3;
                if(value == 4)
                    dieImage = pic4;
                if(value == 5)
                    dieImage = pic5;
                if(value == 6)
                    dieImage = pic6;
            }
            public Image getImage(){
                return dieImage;
            }
        }
    public static void main(String[] args) {
        launch(args);
    }
}

标签: javajavafxnetbeansimageviewdice

解决方案


推荐阅读