Задать вопрос
xheirt
@xheirt
Java, Python

Почему не выходит привязать к кнопке обработчик?

Доброго времени суток! Возникла такая проблемка, что при попытке привязать к кнопке 'Close' метод закрытия программы, у меня в поле для указания действия кнопки не высвечиваются написанные методы, хотя должны, как на скриншоте:
6325077cc00f5074959168.png
Как минимум, даже стрелочка, та что справа, не высвечивается, т.е. он вообще не видит ни одного метода.
При попытке вписать метод вручную и запуске программы выдаёт кучу ошибок
Exception in Application start method
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:577)
	at javafx.graphics@18-ea/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
	at javafx.graphics@18-ea/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:577)
	at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1081)
Caused by: java.lang.RuntimeException: Exception in Application start method
	at javafx.graphics@18-ea/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
	at javafx.graphics@18-ea/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: javafx.fxml.LoadException: No controller specified.
/E:/Projects/TestMenu/target/classes/com/example/testmenu/hello-view.fxml:19

	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2703)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader$Element.getControllerMethodHandle(FXMLLoader.java:568)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:610)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:781)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2924)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2639)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
	at javafx.fxml@18-ea/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2516)
	at com.example.testmenu/com.example.testmenu.HelloApplication.start(HelloApplication.java:14)
	at javafx.graphics@18-ea/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
	at javafx.graphics@18-ea/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
	at javafx.graphics@18-ea/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at javafx.graphics@18-ea/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
	at javafx.graphics@18-ea/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
	at javafx.graphics@18-ea/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at javafx.graphics@18-ea/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
	... 1 more
Exception running application com.example.testmenu.HelloApplication

Подскажите, в чем моя ошибка, или как это можно решить, пожалуйста!
  • Вопрос задан
  • 129 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
Вадим Жолудев,
если javafx.fxml.LoadException: No controller specified
то проблемы с кодом джава который не привязан к фхмл.
в fxml контроллер должен быть привязан путем указания полного названия класса контроллера
напр если
package com.example.testmenu;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class HelloController {
    @FXML
    private Button btnAdd;
...

то в корневом элементе напр
<BorderPane 
fx:controller="com.example.testmenu.HelloController"
maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" 
>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы