- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在查看LoginDemo 的javafx 示例代码。我使用了多场景应用的代码;我得到一个 javafx.fxml.LoadException。我不知道该怎么办。
我的代码是打开一个窗口并有一个按钮,然后单击它以在 javafx TextArea 中显示文本。
主要:
package Test;
import java.io.InputStream;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
private Stage stage;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
try{
stage = primaryStage;
stage.setTitle("Test");
setScene();
stage.show();
}catch(Exception e){
e.printStackTrace();
}
}
private void setScene(){
try{
Cont controller = (Cont) changeScene("Window.fxml");
controller.setApp(this);
}catch(Exception e){
e.printStackTrace();
}
}
private Initializable changeScene(String fxml) throws Exception {
FXMLLoader loader = new FXMLLoader();
InputStream in = Main.class.getResourceAsStream(fxml);
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(Main.class.getResource(fxml));
AnchorPane page;
try {
page = (AnchorPane) loader.load(in);
} finally {
in.close();
}
Scene scene = new Scene(page, 800, 600);
stage.setScene(scene);
stage.sizeToScene();
return (Initializable) loader.getController();
}
}
继续:
package Test;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
public class Cont implements Initializable {
private Main application;
@FXML
private Button btn;
@FXML
public TextArea Console;
public void setApp(Main application){
this.application = application;
}
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
assert btn != null : "fx:id=\"btn\" was not injected: check your FXML file 'Window.fxml'.";
assert Console != null : "fx:id=\"Console\" was not injected: check your FXML file 'Window.fxml'.";
btn.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent arg0) {
setText("hello world");
}
});
}
public void setText(String text){
Console.appendText(text+"\n");
}
}
窗口.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="Cont">
<children>
<TextArea fx:id="Console" prefHeight="365.0" prefWidth="600.0" />
<Button fx:id="btn" layoutX="274.0" layoutY="374.0" mnemonicParsing="false" text="Button" />
</children>
</AnchorPane>
错误:
javafx.fxml.LoadException:
/C:/Users/user/workspace%20for%20coding/Javafx-Test/bin/Test/Window.fxml:9
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.access$700(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(Unknown Source)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(Unknown Source)
at javafx.fxml.FXMLLoader$Element.processStartElement(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(Unknown Source)
at javafx.fxml.FXMLLoader.processStartElement(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at Test.Main.changeScene(Main.java:49)
at Test.Main.setScene(Main.java:35)
at Test.Main.start(Main.java:25)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda$53/70604542.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$172(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/186276003.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$48/455370116.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/237061348.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: Cont
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more
最佳答案
fx:controller
属性需要 Controller 类的完全限定类名。由于您的 Controller Cont
位于名为 Test
的包中,因此您需要
fx:controller="Test.Cont"
堆栈跟踪确实为您提供了所需的所有信息:错误产生的文件和行号:
/C:/Users/user/workspace%20for%20coding/Javafx-Test/bin/Test/Window.fxml:9
以及根本原因:
Caused by: java.lang.ClassNotFoundException: Cont
即它找不到名为 Cont
的类(因为它的名称是 Test.Cont
)。
(顺便说一句,请注意,包名称应全部小写,因此您确实应该将包命名为 test
,而不是 Test
。)
关于java - 如何修复 javafx.fxml.LoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31683911/
我对 JavaFx 还很陌生。我正在尝试按照教程构建一个简单的计算器。我是按照教程一步一步来的。当我运行该项目时,它显示 javafx fxml LoadException。我看了一些与此相关的解决方
我正在使用 javaFXML。我试图通过单击登录按钮打开一个选项窗口,但我收到 javafx.fxml.LoadException。我正在提供完整的代码,请帮助我。 FXMLDocument.fxml
这个问题已经有答案了: javafx 8 compatibility issues - FXML static fields or methods (1 个回答) 已关闭 6 年前。 我是 JavaF
我正在尝试借助这个 Tutorial 实现一个包含一些数据的 TableView . 我坚持将数据从“Person.java”填充到 TableView。 我将问题追溯到 部分在最底部的“fxmlt
我尝试制作多用户登录表单,但是,我在将值从一个 Controller 传递到另一个 Controller 时遇到问题,而且我真的不知道发生了什么。 第一个 Controller public clas
我正在查看LoginDemo 的javafx 示例代码。我使用了多场景应用的代码;我得到一个 javafx.fxml.LoadException。我不知道该怎么办。 我的代码是打开一个窗口并有一个按钮
showAdminLoginScene() 方法产生错误,但是,如果我修改此方法并从同一个包中加载另一个 fxml 文件,它会加载得很好:这是我的 Main : package application
每当我尝试运行此代码时都会获取 LoadExeption。 代码第一次运行良好,但之后我就不断收到此错误。它只是一个简单的登录页面,没有太多编码。 主要类如下 打包申请; import jav
无法弄清楚可能的问题是什么??!!应用程序构建成功并且运行成功,但是当我尝试在 JavaFX Scene Builder 中加载 fxml 文件时,它没有打开并出现以下错误: com.oracle.j
我创建了playerMp3。我正在尝试在 ScenBuilder 中创建一个 GUI 并将其导入到我的代码中。我使用 FXMLLoader 来实现此目的,但编译时出现错误。在模块信息中,我已表明我使用
我在使用 FXML 文件(手动编写,不是在 SceneBuilder 中生成)构建 JavaFX 项目时遇到问题。下面是 FXML 文件。这是按照 http://docs.oracle.com/jav
这段代码有效,但现在我遇到了麻烦。我认为这就是问题所在,但我不知道: Caused by: javafx.fxml.LoadException: /C:/Users/alex/workspac
我对javafx真的很陌生,并试图弄清楚什么是什么。一切顺利,但后来我遇到了异常。这是我的代码; public void showPersonOverview() { try {
我正在尝试创建一个非常简单的带有黑色背景的VBox。就这样。没有其他的。我使用 FXML 来描述我的 VBox。 样本.fxml: Controller .java: package sa
当从 IntelliJ 本地运行时,我的 JavaFX 应用程序启动正常,但是当它被编译成 jar 并可供客户端中的用户访问时,我收到以下异常。知道为什么会这样吗? (07:56:06) javafx
我是 JavaFX 的新手,我正在从事一个简单的计算器项目。 我真的很困惑我的代码出了什么问题。 我猜 MainController.java 或 main.fxml 中有错误。 当我运行 gradl
我使用的是 Java JDK 13 和 FontAwesomeFX 11。 我有一个 FXML 文件,其中包含一些 FontAwesomeIconViews,但是当将该文件加载到我的 Controll
我正在使用 Java 8 LocalDateTime 类将日期保留在数据存储中。日期采用这种格式 2017-07-24T01:00:00.000 作为 EmbeddedEntity 进行持久化。 pr
应用程序工作正常,直到我将 fx:controller 属性放入嵌套的 fxml 文件中。 主类: @SpringBootApplication public class MyApplication
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 4 年前。 我正在为我的学校项目制作数独,需
我是一名优秀的程序员,十分优秀!