- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个创建棋盘的 javafx 程序。但是,当我尝试运行我的程序时,它会在这一行中抛出异常:optionsPane.getChildren().addAll(optionsPane, n_input, grid_display, label, createButton);以下是异常(exception)情况:
Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Children: cycle detected: parent = HBox@ca2959, node = HBox@ca2959 at javafx.scene.Parent$2.onProposedChange(Parent.java:445) at com.sun.javafx.collections.VetoableListDecorator.addAll(VetoableListDecorator.java:234) at com.sun.javafx.collections.VetoableListDecorator.addAll(VetoableListDecorator.java:103) at DD_CheckerBoard.start(DD_CheckerBoard.java:40) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) ... 1 more
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class DD_CheckerBoard extends Application {
Scene scene1, scene2; //2 scenes created to pass from a scene to another scene when create a checkerboard is clicked
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("My Checkerboard");
//Scene 1
HBox optionsPane = new HBox(10);
optionsPane.setAlignment(Pos.CENTER); //sets alignment
TextField n_input = new TextField(); //gets n from the user
TextField grid_display = new TextField(); //only displays n x n
grid_display.setEditable(false);
Label label = new Label("Enter a single number to customize grid size.");
Button createButton = new Button("Create New Checkerboard"); //button to create the new grid for checkerboard
createButton.setOnAction(e-> primaryStage.setScene(scene2)); //calls checkerboard to the scene
optionsPane.getChildren().addAll(optionsPane, n_input, grid_display, label, createButton); //add components
scene1 = new Scene(optionsPane, 300,250); //create scene 1 for optionsPane
//Scene 2
getCheckerBoard(n_input); //create the checkerboard using the input from the user
//SET SCENE
primaryStage.setScene(scene1); // Place in scene in the stage, first scene is for the option pane
primaryStage.show(); // Display the stage;
}
/**
* And this method creates the checkerboard
* @param input n by the user
*/
public void getCheckerBoard(TextField input) {
GridPane checkerboardPane = new GridPane(); //create a grid pane
int n = Integer.parseInt(input.getText()); //parse input n to int
int count = 0; //keep count of rectangles
double s = 70; // side of rectangle
for (int i = 0; i < n; i++) { //create the grid and rectangles
count++; //increment count
for (int j = 0; j < n; j++) {
Rectangle r = new Rectangle(s, s, s, s);
if (count % 2 == 0) r.setFill(Color.BLACK); //put rectangles to assigned colors in order
else r.setFill(Color.WHITE);
checkerboardPane.add(r, j, i); //add components to checkerboard
count++; //increment count
} }
scene2 = new Scene(checkerboardPane); //Create scene 2
}
public static void main(String[] args) throws Exception{
launch(args);
}
}
最佳答案
您正在尝试将 optionsPane
作为子项添加到自身:
optionsPane.getChildren().addAll(optionsPane, n_input, grid_display, label, createButton);
这会导致您收到异常。要解决此问题,只需从子列表中删除 optionsPane
即可:
optionsPane.getChildren().addAll(n_input, grid_display, label, createButton);
但是您也会收到 NumberFormatException
因为您的 Textfield 默认为空:
java.lang.NumberFormatException: For input string: ""
所以你应该为你的TextField
设置一个默认值:
TextField n_input = new TextField("0");
关于java - getChildren().addAll() 上的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55190060/
Java API docs say以下关于Collections.addAll The behavior of this convenience method is identical to that
我的代码没有编译,我不太清楚为什么。这是代码: ArrayList classifications = productData .stream()
我对此有点困惑,所以希望能提供一些说明。 public void addAll(List animals) 对比 public void addAll(List animals) 最佳答案 区别在于
每当调用 Collection#addAll 时,它都会创建参数列表的副本,然后将其附加到调用 addAll 的集合。 下面是案例一的代码: if (parentData != 0)
对不起标题,但我不知道如何更好地解释它! 假设我在 Java 中有这个类: public class ToyClass { public int number; } 还有一个名为 ToyCla
我必须将 PaginatedQueryList 添加到来自 dynamoDbMapper.query 的 secondList 以进行测试。我怎样才能实现它? List exampleList = s
如果尝试向阻塞队列添加超过阻塞队列剩余大小的集合,会发生什么?从我目前阅读的文档中并不清楚这一点。 LinkedBlockingQueue foo = new LinkedBlockingQ
在一个方法中,我进行了两次调用。第一个调用从另一个方法构造并返回一个哈希集。第二次调用将这个新构造的集合添加到现有集合中,并作为参数传递给此方法。 public static void someMet
所以我的目标是用从 1 到 x 部分的 y 个随机数填充 arraty,然后计算每个数字重复的次数并打印它。这是代码: int counter = 1; int length = random
我目前正在学习泛型,我有一个任务,我必须创建一个带有 T 类型参数和数组数据成员以及一些方法(setItem、getItem、visitor、condition 和 addAll)的 Array 类。
我正在尝试制作一个创建棋盘的 javafx 程序。但是,当我尝试运行我的程序时,它会在这一行中抛出异常:optionsPane.getChildren().addAll(optionsPane, n_
java.util.Collections 中 addAll 方法的实现只是循环遍历源集合,并为源集合中的每个元素调用接收集合的 add 方法。 因此,如果接收集合的容量很小并且我们要向其中添加许多元
下面的代码用于 ListView 的搜索过滤器。每次更改 tbSearch editText 中的文本时, ListView 中的项目也必须更改。执行进入 if 语句 (txt.length()==0
我正在尝试查找字符串中唯一字符的数量。解决方案必须尽可能高效(时间复杂度 O(N);非常大的数组;一般来说是大 O)。我决定这样做(如果您有更好的解决方案请告诉我)。唯一的问题是,当我尝试运行它时,它
Map> mapp = new HashMap>(); HashSet set1 = new HashSet(); set1.add("a"); HashSet set2 = new HashSet(
import java.util.*; public class MyClass { public static void main(String[] args) { List a = n
我刚刚开始接触 java 和 android。 下面是我的代码,用于在 Activity 中添加所有按钮然后隐藏它们。问题:无论如何,他们是否会自动添加 Activity 中的所有按钮,而不必列出每个
为什么我在执行以下代码时遇到异常。 String[] array1 = {"A","B","C","D","E"}; String[] array2 = {"F","G","H","I"};
如果我想将一个列表添加到另一个列表,我调用 target.adAll(source)。 但是如果我需要先处理列表中的每个值怎么办? 我可以做类似的事情 for(String s: source) {
最近在List.addAll中发现了一个使用流的代码片段,但是我看不出为什么要使用它。 所以给出一个简单的列表。 List subList作为参数传递给方法。有一个是另一个,它是一个字段并且包含相同类
我是一名优秀的程序员,十分优秀!