简体   繁体   English

我正在为我的班级使用 java 在 JGrasp 中制作一个神奇的 8 球。 如何让我的代码运行? 我不知道我的错误是什么或如何解决它?

[英]I am working on making a magic 8 ball in JGrasp using java for my class. how do I get my code to run? I do not know what my error is or how to fix it?

this is my code这是我的代码

import java.util.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Polygon;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.scene.image.ImageView;
import javafx.scene.image.Image;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.geometry.Pos;
import javafx.scene.layout.VBox;
import javafx.scene.control.Button;
import javafx.scene.layout.FlowPane;
import javafx.geometry.Pos;
import javafx.scene.control.TextField;
import java.security.SecureRandom;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

   public class FinalProject8ball extends Application
   {
      @Override
      public void start(Stage primaryStage)
      {
         Circle circle = new Circle(80);
         circle.setStroke(Color.BLACK);
         circle.setFill(Color.BLACK);

         StackPane sPane = new StackPane();
         sPane.getChildren().add(circle);

         Scene scene = new Scene(sPane, 300, 400);
         primaryStage.setScene(scene);
         primaryStage.show();       
         Polygon triangle = new Polygon();
         triangle.getPoints().setAll(
            50.0, 50.0,
            60.0, 60.0,
            20.0, 40.0
            );

         StackPane sPane1 = new StackPane();
         sPane1.getChildren().add(triangle);

         Scene scene2 = new Scene(sPane, 300, 400);
         primaryStage.setScene(scene2);
         primaryStage.show();

         String answers[] = {"It is certain", "It is decidedly so", "Without a doubt",
            "Yes - definitely", "You may rely on it", "As I see it, yes",
            "Most likely", "Outlook good", "Signs point to yes",
            "Yes", "Reply hazy, try again", "Ask again later",
            "Better not tell you now", "Cannot predict now", "Concentrate and ask again",
            "Don't count on it", "My reply is no", "My sources say no",
            "Outlook not so good", "Very doubtful"};

        //constructs a random number  
         SecureRandom randomNumber = new SecureRandom();
         ImageIcon image = new ImageIcon("magic8ball.jpg");
         int counter = 0;

        //the loop keeps asking the person to plat till no button is clicked
         while(!(counter == 1)) {
            //prompts the user to ask a yes or no question 
            String answer = JOptionPane.showInputDialog(null, 
                    "PLease enter a yes or no question:", 
                    "WELCOME: What will your answer be?!", JOptionPane.INFORMATION_MESSAGE);

            //displays the answer
            if(answer != null)
               JOptionPane.showMessageDialog(null, answer+ "\n" + answers[randomNumber.nextInt(answers.length)], 
                  "The Magic-8 Ball has responded.", JOptionPane.PLAIN_MESSAGE, image);

            //gives the user the option to click yes or no to continue or end the program
            counter = JOptionPane.showConfirmDialog(null, "", "Would you like to ask again?", 
                    JOptionPane.YES_NO_OPTION, 0, image);                           
         }

        //displays my name after user enters no to give credit
         JOptionPane.showMessageDialog(null, "Created by Isabelle", "Have a MAGICAL day! Your answers have been answerd.", 
                JOptionPane.PLAIN_MESSAGE, image);
      }
      public static void main(String[] args)
      {
         Application.launch(args);
         }
      }

This is the error message I got after trying to run my code after compiling it.这是我在编译后尝试运行我的代码后得到的错误消息。

----jGRASP exec: java --module-path C:\\Users\\Isabelle rose\\Downloads\\openjfx-11.0.2_windows-x64_bin-sdk (1)\\javafx-sdk-11.0.2\\lib --add-modules=javafx.controls FinalProject8ball Exception in Application start method java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62 ----jGRASP exec: java --module-path C:\\Users\\Isabelle rose\\Downloads\\openjfx-11.0.2_windows-x64_bin-sdk (1)\\javafx-sdk-11.0.2\\lib --add-modules =javafx.controls FinalProject8ball 异常在应用程序启动方法 java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at javafx .graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) 在 java.base/jdk .internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62 ) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) Caused by: java.lang.RuntimeException: Exception in Application start method at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalArgumentException: StackPane@4c7dc253[styleClass=root]is already set as root of another scene at javafx.graphics/javafx.scene.Scene$8.invalidated(Scene.java:1216) at javafx.base/javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112) at javafx.base/javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147) at javafx.graphics/javafx.scene. ) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 java.base/sun。 launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) 引起:java.lang.RuntimeException:javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)处的应用程序启动方法异常) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) 在 java.base/java.lang.Thread.run(Thread.java:834) 引起:java .lang.IllegalArgumentException: StackPane@4c7dc253[styleClass=root] 已经被设置为 javafx.graphics/javafx.scene.Scene$8.invalidated(Scene.java:1216) 的另一个场景的根。 property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112) 在 javafx.base/javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147) 在 javafx.graphics/javafx.scene。 Scene.setRoot(Scene.java:1178) at javafx.graphics/javafx.scene.Scene.(Scene.java:356) at javafx.graphics/javafx.scene.Scene.(Scene.java:236) at FinalProject8ball.start(FinalProject8ball.java:58) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) ... 1 more Exception running application F Scene.setRoot(Scene.java:1178) at javafx.graphics/javafx.scene.Scene.(Scene.java:356) at javafx.graphics/javafx.scene.Scene.(Scene.java:236) at FinalProject8ball.start (FinalProject8ball.java:58) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$ runAndWait$12(PlatformImpl.java:455) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) 在 java.base/java.security.AccessController.doPrivileged(Native Method) ) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) 在 javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java: 96) 在 javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 在 javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java: 174) ... 1 个运行应用程序 F 的异常inalProject8ball inalProject8ball

The real error in the stack is the following:堆栈中的真正错误如下:

Caused by: java.lang.IllegalArgumentException: StackPane@70ea261c[styleClass=root]is already set as root of another scene

Look at this line:看看这一行:

Scene scene2 = new Scene(sPane, 300, 400);

Try this instead:试试这个:

// You already used 'sPane' as the root of a previous scene called 'scene'
Scene scene2 = new Scene(sPane1, 300, 400);

NOTE:笔记:

Although your program will run with this single change, I think that you're going to find that it doesn't look the way it should.尽管您的程序将通过这个单一更改运行,但我认为您会发现它看起来不像它应该的样子。 You're using two stackpanes, with a circle on one and a triangle on the other.您正在使用两个堆栈窗格,一个是圆形,另一个是三角形。 Think of a stackpane as a stack of nodes, with each node layered one on top of the other, as if you were physically stacking them.将堆栈窗格视为节点堆栈,每个节点一个层叠一个,就好像您在物理上堆叠它们一样。 Pretty sure you just need one stackpane with your circle and triangle added to them to represent an 8-Ball.可以肯定的是,您只需要一个带有圆圈和三角形的堆栈窗格即可代表一个 8 球。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我的 Java 代码由于错误没有运行,我该如何修复它才能运行 - My Java code is not running due to error, how do I fix it to run 使用 Validate 类验证 Java 表单中的输入。 我正在尝试获取代码以在我的程序中使用 Validate 类 - Validating input in a form in Java using a Validate class. I am trying to get the code to use the Validate class into my program Stacktrace不包括我的课程。 我该怎么办? - Stacktrace does not include my class. What should I do? 我怎么知道我的 Observable 类发生了什么变化? - How do I know what changed in my Observable class? 如何使用二维数组修复Java代码中的“不兼容类型”错误? - How do I fix an “incompatible types” error in my Java code using 2-d arrays? 我怎么知道我的代码库是否有 java 8 方法 - how do I know if my code base has java 8 methods 我的代码出现错误,我不知道如何修复(Java fx stackPane) - I am getting errors in my code and i don't know how to fix(Java fx stackPane) 如何在下面的代码中修复此堆栈溢出错误? - How do I fix this stack overflow error in my code below? 如何为jgrasp代码添加声音? - How do i add sound to jgrasp code? 如何解决“ java.util.InputMismatchException”错误? - How do I fix my “java.util.InputMismatchException” error?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM