当前位置: 首页 > 知识库问答 >
问题:

找不到JavaFX的fxml错误

仉运乾
2023-03-14

multilanguageSupport.java

public class MultiLingualSupport extends Application {

Stage currentStage;
void setStage(Stage stage)
{
    currentStage=stage;
}
@Override
public void start(Stage stage) throws Exception {

    setStage(stage);
    replaceScene("LanguageUIFXML.fxml",this,new Locale("en","EN"));

}


public static void main(String[] args) {
    launch(args);
}
public void replaceScene(String fxml, Object aThis, Locale locale) //throws Exception
{
    System.out.println("Replacing Scene");
   try 
   {
       Parent root;
       FXMLLoader loader=new FXMLLoader();
       loader.setResources(ResourceBundle.getBundle("TextData.AllText", locale));
       root = loader.load(this.getClass().getResource(fxml),null, new JavaFXBuilderFactory());
       Scene scene=currentStage.getScene();
       if(scene==null)
       {
           scene=new Scene(root);
           currentStage.setScene(scene);
       }
       else
           currentStage.getScene().setRoot(root);

       currentStage.sizeToScene();
       currentStage.show();
   }
   catch (IOException ex) 
   {
       ex.printStackTrace();
   }


}
}

LanguageIfxml.fxml

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" styleClass="mainFxmlClass" xmlns:fx="http://javafx.com/fxml" fx:controller="multilingualsupport.LanguageUIFXMLController">
  <children>
    <Label fx:id="lblDemo" layoutX="284.0" layoutY="72.0" prefHeight="26.0" prefWidth="144.0" text="%keyDemo" />
    <TextField fx:id="txtDemo" layoutX="284.0" layoutY="124.0" prefWidth="200.0" text="%keyTextField" />
    <TextArea fx:id="txtareaDemo" layoutX="284.0" layoutY="164.0" prefWidth="200.0" text="%keyTextArea" wrapText="true" />
    <Button fx:id="btnDemo" layoutX="356.0" layoutY="347.0" mnemonicParsing="false" text="%keyButton" />
    <ListView fx:id="listviewDemo" layoutX="35.0" layoutY="85.0" orientation="HORIZONTAL" prefHeight="218.0" prefWidth="221.0" />
  </children>
  <stylesheets>
    <URL value="@/css/langageuifxml.css" />
  </stylesheets>
</AnchorPane>

LanguageIfXMLController.java

public class LanguageUIFXMLController implements Initializable {

private Label label;
@FXML
private Label lblDemo;

@FXML
private TextField txtDemo;
@FXML
private TextArea txtareaDemo;
@FXML
private Button btnDemo;
@FXML
private ListView<String> listviewDemo=new ListView<>();
private ResourceBundle bundle;

    private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");
    label.setText("Hello World!");
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
    bundle=rb;
    lblDemo.setText(rb.getString("keyDemo"));
    txtDemo.setText(rb.getString("keyTextField"));
    txtareaDemo.setText(rb.getString("keyTextArea"));
    btnDemo.setText(rb.getString("keyButon"));



}    
}

错误消息:

Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.javafx.main.Main.launchApp(Main.java:642)
at com.javafx.main.Main.main(Main.java:805)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2737)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2721)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2707)
at multilingualsupport.MultiLingualSupport.replaceScene(MultiLingualSupport.java:58)
at multilingualsupport.MultiLingualSupport.start(MultiLingualSupport.java:35)
at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)

.属性文件在包TextData中定义

共有1个答案

孟栋
2023-03-14

可以验证FXML文件和MultiLingualSupport类在同一个包中吗?

此外,您还调用了非静态实例化的fxmlloader的静态方法,在将ResourceBundle设置为null之后,将其再次设置为null

loader.setResources(ResourceBundle.getBundle("TextData.AllText", locale));

你能试一下吗

root = (AnchorPane) loader.load(this.getClass().getResource(fxml).openStream());
 类似资料:
  • 我在相应的控制器中有一个用FXML创建的窗口,我有一个按钮,当单击特定的按钮时,它会加载一个小框。这个盒子也是使用FXML设计的。 当我加载盒子并想把它添加到窗口中时,我得到这个错误: 这是我的代码: 主窗口FXML: 我要动态创建的框的FXML:

  • 我需要创建许多不同的FXML文件,每个文件都有一个一致的布局。每一个都有一个锚烷,可以容纳不同的内容物。 有没有办法加载一个“基本”FXML文件,然后加载第二个FXML文件,并将数据路由到第一个FXML文件? 例如,FXML#1有一个边框。FXML#2有一个按钮,文本字段,标签等。如何加载#1,然后加载#2作为#1的孩子?

  • 我是JavaFX新手,在做我的项目时,我尝试切换屏幕。我正在考虑相应的AnchorPane可见性设置为真或假,当从另一个控制器访问AnchorPane时,我遇到了问题。我试图使AnchorPane成为静态的,但它给出了NullPointerException。 这是我的密码。 控制器类 SignUpController类 我试图像这样解决问题,但它关闭了窗口并打开了一个新窗口。

  • 我对这个问题做了一些研究,但仍然无法解决。我还在这里搜索了堆栈溢出的其他方法,但到目前为止还没有成功。我试过不带样例,把它移到另一个文件夹,没有效果。结构如下: 主要Java代码 controller.java代码 我跟随本教程学习更多关于JavaFX和XML的知识。

  • 我正在IntelliJ中打开新的JavaFX项目,我安装了JDK的所有必要文件,但是在fxml文件中有多个错误“意外令牌”。打开新的javafx项目和fxml文件后立即显示此错误(这意味着我没有从基本fxml标记中添加或删除任何内容)。我能做什么呢?

  • 我想在一个场景中找到一个VBox节点加载感谢,但我得到以下异常: 守则: fxml文件: 我想知道: 1。为什么查找方法返回的是,而不是 2。如何以另一种方式获取? 提前谢谢