我一直在尝试创建一个骰子模拟器,在这里我将创建一个JavaFX应用程序来模拟掷骰子。当用户单击一个按钮时,我的应用程序将生成两个随机数,每个随机数在1到6的范围内,代表骰子的值。然后,我的应用程序将使用ImageView控件显示骰子。
一切正常,除了我的骰子图像不会出现的事实。我也没有收到任何错误,应用程序运行正常。我在做什么错,为什么我的骰子图像不会出现?非常感谢任何帮助,谢谢大家。
DieRoll类
import java.util.Random;
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;
}
}
DieImages类
import javafx.scene.image.Image;
public class DieImages
{
Image pic1 = new Image("file:images/1Die.bmp");
Image pic2 = new Image("file:images/2Die.bmp");
Image pic3 = new Image("file:images/3Die.bmp");
Image pic4 = new Image("file:images/4Die.bmp");
Image pic5 = new Image("file:images/5Die.bmp");
Image pic6 = new Image("file:images/6Die.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;
}
}
DiceSimulator类
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
import java.util.Random;
public class DiceSimulator extends Application
{
private ImageView viewDie1 = new ImageView();
private ImageView viewDie2 = new ImageView();
private Label resultDie;
private Label message1;
private Label message2;
public static void main(String[] args)
{
// Launch the application.
launch(args);
}
@Override
public void start(Stage primaryStage)
{
primaryStage.setTitle("Dice Simulator");
Label message1 = new Label("Welcome to the Dice Simulator!");
Label message2 = new Label("Please hit start to roll the dice!");
resultDie = new Label();
Button startButton = new Button("Start!");
startButton.setOnAction(new StartButtonHandler());
HBox hbox = new HBox(10, viewDie1, viewDie2);
VBox vbox = new VBox(10, message1, message2, startButton, hbox, resultDie);
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 diePic1;
Image diePic2;
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);
image1.setImage(num2);
diePic1 = image1.getImage();
diePic2 = image2.getImage();
viewDie1 = new ImageView(diePic1);
viewDie2 = new ImageView(diePic2);
resultDie.setText("You rolled a " + num1 + " and " + num2 + "!");
}
}
}
答案 0 :(得分:1)
Java找不到您要显示的文件,为什么JavaFX不会抛出错误,也没有线索。
相对位置(如您现在指定的位置)从Java文件开始(如果单独运行文件),或者从项目根目录开始(如果通过ide运行文件)。
出于测试目的,请尝试使用绝对位置指定文件位置,例如对于Linux为/home/user/images/1Die.bmp
,对于Windows为C:\Users\user\images\1Die.bmp