【发布时间】:2020-03-13 03:26:54
【问题描述】:
我一直在尝试创建一个骰子模拟器,我将在其中创建一个模拟掷骰子的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;
}
}
骰子模拟器类
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 + "!");
}
}
}
【问题讨论】:
标签: java javafx imageview simulator dice