Controllery javy

0

Hej, Uczę się fx'a i wszystko pieknie dziala dopóki nie nadaje mojemu przyciskowi jakiejś funkcji po tym dzieją się rzeczy nie stworzone Smoki, lasery, errory i inne... daje kilka screenow :

https://zapodaj.net/c31c8ee91d363.png.html
https://zapodaj.net/9bba17fdaa9a7.png.html
https://zapodaj.net/fa609908a5349.png.html

Wiecie może jak to naprawić?

0

Z tych screenów to wiele nie widać. Ustawiłeś w klasę kontrolera? Zapodaj kod i treść błędu.

0

Przepraszam że otworzyłem temat a pozniej nie pisalem, ale przypadki chodzą po ludziach i po prostu nie mialem jak. błędu nie udało mi się naprawic.

Kod Błędu:

  /usr/lib/jvm/jdk-11.0.2/bin/java -Djava.library.path=/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib --module-path /home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED -javaagent:/home/pear-slayer/Pobrane/idea-IC-183.5153.38/lib/idea_rt.jar=34533:/home/pear-slayer/Pobrane/idea-IC-183.5153.38/bin -Dfile.encoding=UTF-8 -classpath /home/pear-slayer/IdeaProjects/Fxkk/out/production/Fxkk:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/src.zip:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx-swt.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.web.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.base.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.fxml.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.media.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.swing.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.controls.jar:/home/pear-slayer/Pobrane/javafx-sdk-11.0.2/lib/javafx.graphics.jar sample.Main
Exception in Application start method
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: javafx.fxml.LoadException: No controller specified.
/home/pear-slayer/IdeaProjects/Fxkk/out/production/Fxkk/sample/sample.fxml:8

	at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2621)
	at javafx.fxml/javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:105)
	at javafx.fxml/javafx.fxml.FXMLLoader$Element.getControllerMethodHandle(FXMLLoader.java:565)
	at javafx.fxml/javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:607)
	at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:778)
	at javafx.fxml/javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2838)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2557)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
	at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
	at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
	at sample.Main.start(Main.java:19)
	at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
	at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
	at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
	... 1 more
Exception running application sample.Main

Process finished with exit code 1

Nie umiem jeszcze uzywać gita (chodz zauwazyłem że przydało by mi się juz nauczyć) dla tego wrzucam kod tutaj:

Plik: Main.java:

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

import java.awt.*;

public class Main extends Application {


    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("/sample/sample.fxml"));

        primaryStage.setTitle("Hello First program");
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);


        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
} 

Plik:Controller.java:

 package sample;

public class Controller {

    public void kk(){
        System.out.println("Test");
    }
} 

Plik: Sample.fxml:

 <?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.StackPane?>

<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Button mnemonicParsing="false" onAction="#kk" text="Button" />
   </children>
</StackPane> 

dodam jeszcze że na początku mialem problemy z java 11 i zastanawiam się czy powrót do 10 nie bedzie złym pomysłem, może to coś zmieni.

0

Caused by: javafx.fxml.LoadException: No controller specified.
musisz określić klasę kontrolera, najprościej można to zrobić tak:

<StackPane fx:controller="sample.Controller" maxHeight="-Infinity" ...

Jakiego IDE używaż? U mnie IntelliJ (polecam) świeci na czerwono No controller specified for top level element przy onAction="#kk", gdy brakuje fx:controller.

0

Wywal też import z obu klas:

import java.awt.*;

Kontrolki w JavaFX i AWT mają takie same nazwy klas, więc importuj tylko te z javafx.scene.control.

1 użytkowników online, w tym zalogowanych: 0, gości: 1