首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在为我的类用JGrasp制作一个神奇的8球。如何让我的代码运行?我不知道我的错误是什么,或者如何修复它?

我正在为我的类用JGrasp制作一个神奇的8球。如何让我的代码运行?我不知道我的错误是什么,或者如何修复它?
EN

Stack Overflow用户
提问于 2019-12-14 08:39:23
回答 1查看 147关注 0票数 0

这是我的代码

代码语言:javascript
复制
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);
         }
      }

这是我在编译代码后尝试运行代码后得到的错误消息。

-jGRASP exec: java --模块路径C:\Users\Isabelle rose\Downloads\openjfx-11.0.2_windows-x64_bin-sdk (1)\javafx-sdk-11.0.2\lib --add-modules=javafx.control在java的java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)的应用程序启动方法中的异常( java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native FinalProject8ball java.lang.reflect.InvocationTargetException ).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) 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)由以下原因引起: javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900处的应用程序启动方法出现异常:java.lang.RuntimeException) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834)原因: 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中的java.lang.IllegalArgumentException: StackPane@4c7dc253styleClass=rootis已设置为另一个场景的根.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147) at 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.raphics/com.sunjavafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)上的.glass.ui.win.WinApplication._runLoop(本机方法) ...运行应用程序FinalProject8ball时又出现了1个异常

EN

回答 1

Stack Overflow用户

发布于 2019-12-14 09:08:22

堆栈中真正的错误如下所示:

代码语言:javascript
复制
Caused by: java.lang.IllegalArgumentException: StackPane@70ea261c[styleClass=root]is already set as root of another scene

看这一行:

代码语言:javascript
复制
Scene scene2 = new Scene(sPane, 300, 400);

试着这样做:

代码语言:javascript
复制
// You already used 'sPane' as the root of a previous scene called 'scene'
Scene scene2 = new Scene(sPane1, 300, 400);

注意:

尽管您的程序将通过这一点更改运行,但我认为您会发现它看起来并不像它应该的那样。您正在使用两个堆栈窗格,一个上面有一个圆,另一个上面有一个三角形。可以将堆栈窗格看作是一堆节点,每个节点层叠在另一个节点之上,就像您在物理上堆叠它们一样。我很确定你只需要一个堆叠窗格,在上面添加你的圆圈和三角形来表示一个8球。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59331379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档