java - 使用 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);
}
}
解决方案
推荐阅读
- flutter - 在树中的哪个位置使用 Provider 包装小部件以使用 Provider 来维护整个应用程序的状态?
- ios - SWIFT:IMDF 室内地图启用 3D 效果而不是平面
- sql - 如何使用 SQL 中的一列中的值创建列(SAS 中的 PROC SQL)
- c - int16_t 两个字符大小不一样?
- c++ - C++ 数组传递给具有大小的函数
- reactjs - '() => Timeout' 类型的参数不能分配给 'number' 类型的参数
- python - 导入 matplotlib.pyplot 时出现错误“没有名为 'numpy.core._ufunc_config' 的模块”
- ios - 如何检查用户是否在 firebase swift 应用程序中正确登录?
- android - 如何在 Chrome 上默认使用 webVR-polyfill?
- google-drive-api - 如何将文件上传到用户谷歌驱动器帐户