GVKun编程网logo

Java 项目可以很容易地显示一个新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?

26

关于Java项目可以很容易地显示一个新场景,但仅限于某些JavaFXML文件,如何解决这个问题?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于@FXML批注和FXMLLoader类未解析

关于Java 项目可以很容易地显示一个新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于@FXML批注和FXMLLoader类未解析为Java 11和JavaFX 11中的类型、c# – 元数据集合中已存在具有标识[x]的项目.我该如何解决这个问题?、Java vs JavaFX Script vs FXML.哪种更好的JavaFX编程方式?、JavaFX FileChooser引发错误(可能很容易修复,但仍然很困惑)等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Java 项目可以很容易地显示一个新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?

Java 项目可以很容易地显示一个新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?

问题是堆栈跟踪的这一行:

Caused by: java.lang.ClassNotFoundException: sample.view.Dashboard

这意味着 FXML 加载器无法在包 Dashboard 中找到名为 sample.view 的类。

FXML 加载器寻找这个类,因为它写在文件 Dashboard.fxml 中,即:

<AnchorPane prefHeight="800.0" prefWidth="1400.0" xmlns="http://javafx.com/javafx/15.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.view.Dashboard">

注意行尾的部分:

fx:controller="sample.view.Dashboard"

如果您不需要控制器类,则只需删除该部分即可。

@FXML批注和FXMLLoader类未解析为Java 11和JavaFX 11中的类型

@FXML批注和FXMLLoader类未解析为Java 11和JavaFX 11中的类型

以前我的项目以前是在Java 8上运行的,但是现在我将Java 11和JavaFX 11一起使用,现在JavaFX从Java
11开始就已经与Java分离了。我没有下载JavaFX
SDK,而是在pom.xml中添加了以下依赖项以获取所需的模块和jar文件,它们在早期版本中曾经是Java本身的一部分。

       <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>

但是我can not be resolved to a type@FXML注释和FXMLLoader类上遇到编译错误。

我是否需要添加其他/其他依赖项来解决此问题?

c# – 元数据集合中已存在具有标识[x]的项目.我该如何解决这个问题?

c# – 元数据集合中已存在具有标识[x]的项目.我该如何解决这个问题?

我正在使用实体框架6,使用POCO和fluent-API,我注意到了一个令人讨厌的错误.

如果我有一个名为MyEntity的实体,并且该实体有一个名为MyProp的属性,则无法创建名为MyEntity_MyProp的实体.

例外:

The item with identity 'MyEntity_MyProp' already exists in the Metadata collection.\r\nParameter name: item

如果我重命名任何实体,或重命名属性,错误立即消失.

“bug”是显而易见的:密钥[EntityName] _ [PropertyName]在元数据集合中必须是唯一的.

截图:

我正在迁移一个庞大的实体框架模型,其中包括从EF 4(数据库优先)到EF 6(代码优先,使用fluent-API)的390个类.重命名实体或表格是不可能的.

我该如何解决?

编辑

这个问题与我的问题没有任何关系:The item with identity ‘Id’ already exists in the metadata collection. Parameter name: item

解决方法

当您在实体名称中使用下划线时,会发生此错误.原因是实体框架还使用下划线来创建键的名称(连接实体和属性名称).

因此,如果您有一个名为“Table”的实体,其属性为“Prop”,而一个名为“Table_Prop”的表将发生冲突.这很有可能发生了什么.

Java vs JavaFX Script vs FXML.哪种更好的JavaFX编程方式?

Java vs JavaFX Script vs FXML.哪种更好的JavaFX编程方式?

我是 JavaFX的新手,我在 JavaFX中遇到了2-3种设计UI的方法.

>简单的Java文件,与我们在Swing中使用的方法相同
>我不知道的JavaFX脚本
> FXML是基于xml的UI设计文件

哪个更好?为什么?

解决方法

只是为了说明一点,在javafx 2.0之前使用了javafx脚本并且不再使用了!

>如果您更熟悉java中的编码UI,则可以使用此方法.但是,我个人不喜欢这种方法,因为当你的应用程序过于复杂时,它会使代码变得复杂.
> JavaFX Script在JavaFX 2.0之前使用,不再使用
>在Javafx 2.0中引入了基于FXML的UI设计.这些帮助程序员使用MVC方法对javafx应用程序进行编码.可以找到一个非常好的FXML介绍here.

来自Oracle docs的一节,Why Use FXML

From a Model View Controller (MVC) perspective,the FXML file that contains the description of the user interface is the view. The controller is a Java class,optionally implementing the Initializable class,which is declared as the controller for the FXML file. The model consists of domain objects,defined on the Java side,that you connect to the view through the controller.

FXML可以使用Scene Builder轻松设计,Scene Builder是javafx应用程序的Drag n Drop UI设计器.使用FXML具有以下优点:

>您的应用程序遵循MVC结构,就像企业JavaEE应用程序一样.
>表示层(UI)与应用层(逻辑)隔离,这样可以在需要时轻松更改应用程序的外观,就像网站一样!
> FXML为您的应用程序带来了可扩展性和可维护性.

我对你的建议是使用FXML.如果您不了解它们,请了解它们.这将是值得的!

JavaFX FileChooser引发错误(可能很容易修复,但仍然很困惑)

JavaFX FileChooser引发错误(可能很容易修复,但仍然很困惑)

我正在尝试使用以下代码打开FileChooser:

package back_end.controllers;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;

import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;

/**
 * Created by Quinn McHugh on 4/15/2014.
 */
public class StartScreen_Controller implements Initializable {

    @FXML
    private ListView lstRecents;
    @FXML
    private Button btnBrowse;
    @FXML
    private BorderPane borderPane;

    @Override
    public void initialize(URL fxmlFileLocation,ResourceBundle resources){
        lstRecents = new ListView();
        btnBrowse = new Button();
        borderPane = new BorderPane();
    }

    public void openFile(){
        /* Presents a file chooser but does nothing functionally.
        */
        FileChooser fc = new FileChooser();
        File f = fc.showOpenDialog(btnBrowse.getScene().getWindow());
    }
}

但是它已经在openFile()方法中搞砸了。编译器将引发NullPointerException与以下错误消息:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1760)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1643)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8196)
    at javafx.scene.control.Button.fire(Button.java:185)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:97)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:90)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3712)
    at javafx.scene.Scene$MouseHandler.access$1800(Scene.java:3440)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1663)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2455)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:326)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:251)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:360)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:526)
    at com.sun.glass.ui.View.notifyMouse(View.java:898)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1757)
    ... 47 more
Caused by: java.lang.NullPointerException
    at back_end.controllers.StartScreen_Controller.openFile(StartScreen_Controller.java:38)
    ... 57 more

我们将不胜感激,因为我是JavaFX的新手,还使用了Scene Builder。

我们今天的关于Java 项目可以很容易地显示一个新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?的分享就到这里,谢谢您的阅读,如果想了解更多关于@FXML批注和FXMLLoader类未解析为Java 11和JavaFX 11中的类型、c# – 元数据集合中已存在具有标识[x]的项目.我该如何解决这个问题?、Java vs JavaFX Script vs FXML.哪种更好的JavaFX编程方式?、JavaFX FileChooser引发错误(可能很容易修复,但仍然很困惑)的相关信息,可以在本站进行搜索。

本文标签: