Прежде всего, извините, если мой вопрос дубликат, я действительно пытался решить свою проблему, изучая решенные вопросы, но я пытался решить эту проблему в течение полдня, и мне не удалосьнайти ответ, который решит проблему.
Я пытаюсь открыть проект JavaFX в IntelliJ IDEA. Когда я пытаюсь открыть проект, я получаю кучу ошибок, которые я не знаю, как решить.
Я попытался вставить файл .fxml в пакет, в котором в настоящее время находится мой основной метод (изображениемоего макета здесь - https://i.imgur.com/N8O2sw7.png), но это не решило проблему.
Я действительно не знаю, что делать дальше, я пробовал другие ответы, которые я нашел на этом сайте, но яне до конца их понял. Я не знаю, какие части проекта нужны для того, чтобы вы знали, в чем проблема, я опубликую те, которые, на мой взгляд, являются наиболее важными, пожалуйста, дайте мне знать, если я должен загрузить любую другую часть.
Вот файл Run:
package cz.kozusznik.pl1.lab08;
import cz.kozusznik.pl1.shapes.manager.CanvasManager;
import cz.kozusznik.pl1.shapes.manager.Ellipse;
import cz.kozusznik.pl1.shapes.manager.ITransformable;
import cz.kozusznik.pl1.shapes.manager.GetTransformable;
import cz.kozusznik.pl1.shapes.manager.Rectangle;
import cz.kozusznik.pl1.shapes.manager.Triangle;
import cz.kozusznik.pl1.utils.IO;
import cz.kozusznik.pl1.utils.IO;
import cz.kozusznik.pl1.shapes.*;
import java.awt.*;
import java.util.ArrayList;
public class Run {
public static void main(String[] args) {
CanvasManager.getInstance();
// ArrayList<GetTransformable> list = new ArrayList<GetTransformable>();
Transformer Tr = new Transformer();
Position bod = new Position(40,200);
Ellipse el = new Ellipse(10,10,10,10);
Rectangle rect = new Rectangle(1,50,10,10);
CanvasManager.getInstance().add(el);
CanvasManager.getInstance().add(rect);
Tr.transform(el, bod, 0.5);
}
}
Вот файл .fxml (при просмотре ответов на этом сайте кажется, что этот файл может вызывать проблему):
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.effect.Light.Distant?>
<?import javafx.scene.effect.Lighting?>
<?import javafx.scene.effect.Shadow?>
<?import javafx.scene.layout.Pane?>
<Pane fx:id="controlPanel" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="388.0" prefWidth="192.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl1.shapes.manager.ManipulationPanelController">
<effect>
<Lighting>
<bumpInput>
<Shadow blurType="GAUSSIAN" />
</bumpInput>
<light>
<Light.Distant />
</light>
</Lighting>
</effect>
<children>
<RadioButton fx:id="createRB" layoutX="14.0" layoutY="55.0" mnemonicParsing="false" selected="true" text="Create">
<toggleGroup>
<ToggleGroup fx:id="actionGroup" />
</toggleGroup></RadioButton>
<RadioButton fx:id="moveRB" layoutX="14.0" layoutY="83.0" mnemonicParsing="false" text="Move" toggleGroup="$actionGroup" />
<RadioButton fx:id="modifyRB" layoutX="14.0" layoutY="110.0" mnemonicParsing="false" text="Modify" toggleGroup="$actionGroup" />
<RadioButton fx:id="deleteRB" layoutX="14.0" layoutY="138.0" mnemonicParsing="false" text="Delete" toggleGroup="$actionGroup" />
<Pane layoutX="15.0" layoutY="175.0" prefHeight="86.0" prefWidth="165.0" style="-fx-border-color: #ddd; -fx-border-width: 2; -fx-background-radius: 6;">
<children>
<Label layoutX="5.0" layoutY="-8.0" style="-fx-background-color: #fff;" text="Actual position">
<padding>
<Insets left="2.0" right="2.0" />
</padding>
</Label>
<Label layoutX="14.0" layoutY="14.0" text="X" />
<TextField fx:id="actualX" editable="false" layoutX="36.0" layoutY="14.0" prefHeight="26.0" prefWidth="116.0" />
<Label layoutX="14.0" layoutY="44.0" text="Y" />
<TextField fx:id="actualY" editable="false" layoutX="36.0" layoutY="44.0" prefHeight="26.0" prefWidth="116.0" />
</children>
</Pane>
<Pane id="selected" layoutX="14.0" layoutY="274.0" prefHeight="86.0" prefWidth="165.0" style="-fx-border-color: #ddd; -fx-border-width: 2; -fx-background-radius: 6;">
<children>
<Label layoutX="5.0" layoutY="-8.0" style="-fx-background-color: #fff;" text="Selected position">
<padding>
<Insets left="2.0" right="2.0" />
</padding>
</Label>
<Label layoutX="14.0" layoutY="14.0" text="X" />
<TextField fx:id="selectedX" editable="false" layoutX="36.0" layoutY="14.0" prefHeight="26.0" prefWidth="116.0" />
<Label layoutX="14.0" layoutY="44.0" text="Y" />
<TextField fx:id="selectedY" editable="false" layoutX="36.0" layoutY="44.0" prefHeight="26.0" prefWidth="116.0" />
</children>
</Pane>
<ComboBox fx:id="toCreate" layoutX="15.0" layoutY="16.0" prefHeight="26.0" prefWidth="141.0" />
</children>
</Pane>
Вотсообщение об ошибке, которое появляется каждый раз, когда я пытаюсь запустить проект:
"D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.2.3\jbr\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.2.3\lib\idea_rt.jar=65337:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Admin\IdeaProjects\lab05__\lab05\target\classes;C:\Users\Admin\.m2\repository\org\openjfx\javafx-fxml\11.0.2\javafx-fxml-11.0.2.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-fxml\11.0.2\javafx-fxml-11.0.2-win.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-controls\11.0.2\javafx-controls-11.0.2.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-controls\11.0.2\javafx-controls-11.0.2-win.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-graphics\11.0.2\javafx-graphics-11.0.2.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-graphics\11.0.2\javafx-graphics-11.0.2-win.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-base\11.0.2\javafx-base-11.0.2.jar;C:\Users\Admin\.m2\repository\org\openjfx\javafx-base\11.0.2\javafx-base-11.0.2-win.jar;C:\Users\Admin\.m2\repository\it4i-fiji\swing-javafx-ui\0.5.0\swing-javafx-ui-0.5.0.jar;C:\Users\Admin\.m2\repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar cz.kozusznik.pl1.lab08.Run
Exception in Application start method
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at cz.kozusznik.pl1.shapes.manager.ManipulationPanelController.lambda$new$0(ManipulationPanelController.java:73)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "Thread-1" java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:973)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:198)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2459)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at cz.kozusznik.pl1.utils.IO.loadFXML(IO.java:180)
at cz.kozusznik.pl1.shapes.manager.CanvasManager.createControlPanel(CanvasManager.java:123)
at cz.kozusznik.pl1.shapes.manager.CanvasManager$P_Application.createRoot(CanvasManager.java:158)
at cz.kozusznik.pl1.utils.JavaFXApplication.start(JavaFXApplication.java:25)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
... 1 more
Редактировать: добавлен IO.loadFXML
public static <T> T loadFXML(Object _this,String fxmlName) {
try {
FXMLLoader fxmlLoader = new FXMLLoader(_this.getClass().getResource("manipulation_panel.fxml"));
fxmlLoader.setControllerFactory(c->{
try {
return c.equals(_this.getClass())?_this:c.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
});
return fxmlLoader.load();
} catch (IOException e) {
throw new RuntimeException(e);
}
}