【问题标题】:Image not displaying Javafx图像不显示 Javafx
【发布时间】:2015-07-05 03:31:41
【问题描述】:
package DiceProject;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.layout.Pane;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javax.swing.*;
import java.lang.Object;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.layout.Region;
import javafx.scene.control.Control;
import javafx.scene.control.Labeled;
import javafx.scene.control.Label;
/**
 *
 * @author Ethan C.B. Powell
 */
public class DiceProject extends Application {
double Bankroll;
double Loses;
double Winnings;

    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();

        String BetAmountString;

        double BetAmount;
        Bankroll account1 = new Bankroll();

        BetAmountString = JOptionPane.showInputDialog(null, "Enter your wager: ");
        BetAmount = Integer.parseInt(BetAmountString);

        Button btn = new Button();
        btn.setText("Ready to Play???");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {

            //NEEDS MUSIC


            int Dice1 = 1 + (int)(Math.random()*6);

            switch (Dice1) {
            case 1:
              Image diceface11 = new Image("/DiceProject/diceface1.png", true);
              ImageView diceresult11 = new ImageView(diceface11);
              diceresult11.setX(200);
              diceresult11.setY(200);
                     break;
            case 2:
             Image diceface12 = new Image("/DiceProject/diceface2.png", true);
              ImageView diceresult12 = new ImageView(diceface12);
              diceresult12.setX(200);
              diceresult12.setY(200);
                     break;
            case 3:
             Image diceface13 = new Image("/DiceProject/diceface3.png", true);
              ImageView diceresult13 = new ImageView(diceface13);
              diceresult13.setX(200);
              diceresult13.setY(200);
                     break;
            case 4:
             Image diceface14 = new Image("/DiceProject/diceface4.png", true);
              ImageView diceresult14 = new ImageView(diceface14);
              diceresult14.setX(200);
              diceresult14.setY(200);
                     break;
            case 5:
             Image diceface15 = new Image("/DiceProject/diceface5.png", true);
              ImageView diceresult15 = new ImageView(diceface15);
              diceresult15.setX(200);
              diceresult15.setY(200);
                     break;
            case 6:
             Image diceface16 = new Image("/DiceProject/diceface6.png", true);
              ImageView diceresult16 = new ImageView(diceface16);
              diceresult16.setX(200);
              diceresult16.setY(200);
                     break;
            default:
              Image diceface17 = new Image("/DiceProject/diceface1.png", true);
              ImageView diceresult17 = new ImageView(diceface17);
              diceresult17.setX(200);
              diceresult17.setY(200);
                     break;
            }

      int Dice2 = 1 + (int)(Math.random()*6);
      switch (Dice2) {
            case 1:
              Image diceface21 = new Image("/DiceProject/diceface1.png", true);
              ImageView diceresult21 = new ImageView(diceface21);
              diceresult21.setX(400);
              diceresult21.setY(200);
                     break;
            case 2:
             Image diceface22 = new Image("/DiceProject/diceface2.png", true);
              ImageView diceresult22 = new ImageView(diceface22);
              diceresult22.setX(400);
              diceresult22.setY(200);
                     break;
            case 3:
             Image diceface23 = new Image("/DiceProject/diceface3.png", true);
              ImageView diceresult23 = new ImageView(diceface23);
              diceresult23.setX(400);
              diceresult23.setY(200);
                     break;
            case 4:
             Image diceface24 = new Image("/DiceProject/diceface4.png", true);
              ImageView diceresult24 = new ImageView(diceface24);
              diceresult24.setX(400);
              diceresult24.setY(200);
                     break;
            case 5:
             Image diceface25 = new Image("/DiceProject/diceface5.png", true);
              ImageView diceresult25 = new ImageView(diceface25);
              diceresult25.setX(400);
              diceresult25.setY(200);
                     break;
            case 6:
             Image diceface26 = new Image("/DiceProject/diceface6.png", true);
              ImageView diceresult26 = new ImageView(diceface26);
              diceresult26.setX(400);
              diceresult26.setY(200);
                     break;
            default:
                     Image diceface27 = new Image("/DiceProject/diceface1.png", true);
              ImageView diceresult27 = new ImageView(diceface27);
              diceresult27.setX(400);
              diceresult27.setY(200);
                     break;
            }


                if((Dice1 > Dice2)){ //if you win
                    Winnings = BetAmount;
                    account1.SetWinBalance(Winnings);
            }
                else if (Dice1 < Dice2) { //you lose
                    Loses = BetAmount;
                    account1.SetLoseBalance(Loses);
                    account1.GetBalance();
                    if (Bankroll <= 0) { //INSERT BANKRUPT.PNG HERE
                    }
                        }
                else if (Dice1 == Dice2) { //tie
              Image ACD = new Image("/DiceProject/RollAgain.png", true);
              ImageView Reroll = new ImageView(ACD); //for some reason, a problem comes up whe i use "Reroll" as the name
              Reroll.setX(400);
              Reroll.setY(200);
                }
                else {
                //How did you even do this?
                }
            }
        });


        StackPane root = new StackPane();
        root.getChildren().add(btn);


        Scene scene = new Scene(root, 500, 500);

        primaryStage.setTitle("Play Dice");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public class Bankroll {
        private double Bankroll;

        Bankroll() {
        Bankroll = 200;
        }
        public double GetBalance(){
        return Bankroll;
        }
        public void SetLoseBalance(double Loses){
        Bankroll = Bankroll - Loses;
        }
        public void SetWinBalance(double Winnings) {
        Bankroll = Bankroll + Winnings;}
    }

    /**
     * @param args the command line arguments
     */


    public static void main(String[] args) {
        launch(args);
    }

}

它应该显示一个对应于掷骰子的图像,但没有任何反应。 有问题的图像在包中(如果重要,请单击并拖动到项目窗口中)。我在 System.out.print 中添加了 t 显示 Dice1 和 2 结果,所以我知道这是有效的。

我还需要添加其他内容以使其显示吗?我之前从未在 JavaFX 中使用过实际的图像……总的来说,我是 JavaFX 的新手。

GetChildren 的错误消息 C:\Users\Ethan C.B. Powell\Documents\15562\DICE PROjECT\src\DiceProject\DiceProject.java:220:错误:需要类、接口或枚举 public static void main(String[] args) {

C:\Users\Ethan C.B. Powell\Documents\15562\DICE PROJECT\src\DiceProject\DiceProject.java:222:错误:需要类、接口或枚举 } 2 个错误

C:\Users\Ethan C.B. Powell\Documents\15562\DICE PROJECT\nbproject\build-impl.xml:924:执行此行时出现以下错误:

C:\Users\Ethan C.B. Powell\Documents\15562\DICEPROJECT\nbproject\build-impl.xml:264:编译失败;有关详细信息,请参阅编译器错误输出。 构建失败(总时间:0 秒)

【问题讨论】:

  • 和其他评论线程被删除.....

标签: java image netbeans javafx


【解决方案1】:

您永远不会将任何 ImageView 组件添加到 StackPane's 子代。您可以简单地添加一个ImageView 并根据EventHandler 中返回的骰子数更改其图像。

【讨论】:

  • 我可以吗?我怎么做? (就像我说的,这是新手)
  • 您已经在 statup 上添加了一个按钮。只需添加ImageView 并在需要时调用setImage 以更改图像
【解决方案2】:

扩展上一个答案,您已经有了要添加图形的按钮。您必须创建图形,然后将其添加到 Button。示例:

Image diceface11 = new Image("/DiceProject/diceface1.png", true);
ImageView diceresult11 = new ImageView(diceface11);
// Sets diceresult11 to the graphic on btn
btn.setGraphic(diceresult11);

顺便说一句,您还可以减少一些重复的行

// Initialize variable for the image location
String imageLocation = "";
switch(Dice 1){
    // Each case just sets the image location
    case 1: imageLocation = "/DiceProject/diceface1.png";
    case 2: imageLocation = "/DiceProject/diceface2.png";
    // And so on...
}
// The code that was in each case can be put once, after the switch
// Because imageLocation will be set, as long as it is set in each case
// And there is a default case
Image diceFace = new Image(imageLocation, true);
ImageView diceResult = new ImageView(diceFace);
diceresult17.setX(200);
diceresult17.setY(200);
btn.setGraphic(diceResult);

【讨论】:

    【解决方案3】:
     case 1:
              Image diceface11 = new Image("/DiceProject/diceface1.png", true);
              ImageView diceresult11 = new ImageView(diceface11);
              diceresult11.setX(200);
              diceresult11.setY(200);
                     break;
    

    这会创建一个 ImageView 的实例,仅此而已。

    在此之后不会使用实例。

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2014-08-07
      • 2020-12-18
      • 1970-01-01
      相关资源
      最近更新 更多