![](/img/trans.png)
[英]Can't run a simple JavaFX in a Browser packaged by Netbeans IDE
[英]Can't run simple JavaFX programs
我决定使用JavaFX,因为我所知道的图形方面的所有东西都是Swing,因为那是我在大学早期学习的东西,而这正是我在开发游戏时一直使用的东西。 但是,我在入门时遇到了一些麻烦,希望有人之前遇到过这些问题,以便我可以纠正它们。
刚开始时,我打开了Eclipse(Mars),因为它是一个核心库,因此希望能够直接跳入它,但是当我看到该库的导入中突出显示语法错误时,似乎是Eclipse(或Java)不允许您访问jfxrt.jar库。 谷歌搜索了一下之后,我能够通过下载Eclipse的e(fx)clipse插件来纠正这一问题。 这使我可以创建一个非常简单的JavaFX应用程序,该应用程序仅显示一个空白窗口。
但是,当尝试渲染简单的图形基元(矩形)时,出现了一个异常,即Google似乎表明API本身存在问题。 以前有人遇到过此异常吗?我可以做些什么使JavaFX正常工作,以便让我真正开始使用它吗?
Exception in Application start method java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
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(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Children: cycle detected: parent = Group@1c73f0a[styleClass=root], node = Group@1c73f0a[styleClass=root]
at javafx.scene.Parent$2.onProposedChange(Parent.java:445)
at com.sun.javafx.collections.VetoableListDecorator.add(VetoableListDecorator.java:206)
at FXMain.start(FXMain.java:23)
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
Exception running application FXMain
这是我的程序...
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class FXMain extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
stage.setTitle("Java FX Example");
Group root = new Group();
Scene scene = new Scene(root);
stage.setScene(scene);
Canvas canvas = new Canvas(640, 480);
root.getChildren().add(root);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.RED);
gc.setStroke(Color.BLACK);
gc.setLineWidth(2);
gc.fillRect(10, 10, 50, 50);
gc.strokeRect(10, 10, 50, 50);
stage.show();
}
}
这是做什么的
root.getChildren().add(root);
在您的程序而非Java类中检查错误所在的行。 (大多数想法是,您只需单击它)
这条线。 at FXMain.start(FXMain.java:23)
我没有数,但我只是假设是错误的类型。 您可能要添加画布。 不确定是否仍需要画布,而是主要使用JavaFX绘制节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.