JavaFX로 놀아보기로 결정한 이유는 그래픽 적으로 알려진 모든 것이 Swing이기 때문에 대학 시절에 배웠던 것입니다. 게임 개발. 그러나, 나는 시작하는 데 약간의 어려움을 겪었고, 누군가가이 문제를 겪어서 해결할 수 있기를 바랬습니다.간단한 JavaFX 프로그램을 실행할 수 없습니다.
내가 처음 시작했을 때, 핵심 라이브러리이기 때문에 Eclipse로 바로 이동할 수있을 것으로 기대했지만, 라이브러리 가져 오기에서 구문 오류 강조 표시를 보았을 때 Eclipse (또는 Java)에서는 jfxrt.jar 라이브러리에 액세스 할 수 없습니다. 인터넷 검색 후 Eclipse 용 e (fx) 클립se 플러그인을 다운로드하여이 문제를 해결할 수있었습니다. 이를 통해 공백의 창을 보여주는 매우 간단한 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 = [email protected][styleClass=root], node = [email protected][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();
}
}
이것 좀보세요. 나는이 튜토리얼이 도움이 될 것이라고 생각한다. http://code.makery.ch/library/javafx-8-tutorial/part1/ – sarvajeetsuman