gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:23:42 26 4
gpt4 key购买 nike

这是我的代码

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 --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.InitationTargetException 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 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 方法) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在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) 在 javafx.base/javafx.beans.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) 在 javafx.graphics/javafx.scene.Scene.(Scene.java:356) 在 javafx.graphics/javafx.scene.Scene.(Scene.java:236) 在 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 方法) 在 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 方法) 在 javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) ... 1 更多运行应用程序 FinalProject8ball 时出现异常

最佳答案

堆栈中的真正错误如下:

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

看这一行:

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

试试这个:

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

注意:

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

关于java - 我正在为我的类(class)使用 java 在 JGrasp 中制作一个神奇的 8 球。我如何让我的代码运行?我不知道我的错误是什么或如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59331379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com