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

应用程序启动方法中的JavaFx Gui异常

陈瀚
2023-03-14
package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;



public class Main extends Application {

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

}

@Override
public void start(Stage stage) throws Exception {

        AnchorPane pane =  FXMLLoader.load(getClass().getResource("Gui.fxml"));
    Scene scene = new Scene(pane);
    stage.setScene(scene);
    stage.show();


}
}
public class Controller implements Initializable {
DropShadow ds = new DropShadow();
@FXML
ButtonGroup group;
@FXML
RadioButton radio1;
@FXML
RadioButton radio2;
@FXML
RadioButton radio3;
@FXML
Label changelog;
@FXML
TextArea changelogarea;
@FXML
Pane panechange;
@FXML
AnchorPane mainanchor;

Controller(){
changelog.setEffect(ds);    
}







@Override
public void initialize(URL location, ResourceBundle resources) {
    // TODO Auto-generated method stub

}

}

FXML

<?import javafx.scene.text.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane fx:id="mainanchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
   <children>
      <Pane fx:id="panechange" layoutX="106.0" layoutY="-3.0" prefHeight="406.0" prefWidth="493.0">
     <children>
        <Label fx:id="changelog" layoutX="20.0" layoutY="21.0" prefHeight="49.0" prefWidth="463.0" text="                     Change log" textAlignment="CENTER">
           <font>
              <Font size="27.0" />
           </font>
        </Label>
        <TextArea fx:id="changelogarea" layoutX="1.0" layoutY="70.0" prefHeight="329.0" prefWidth="487.0" />
     </children>
  </Pane>
  <RadioButton fx:id="radio2" layoutX="14.0" layoutY="62.0" mnemonicParsing="false" text="Valiuta">
     <toggleGroup>
        <ToggleGroup fx:id="group" />
     </toggleGroup>
  </RadioButton>
  <RadioButton fx:id="radio3" layoutX="14.0" layoutY="94.0" mnemonicParsing="false" text="Atstumai" toggleGroup="$group" />
  <RadioButton fx:id="radio1" layoutX="14.0" layoutY="32.0" mnemonicParsing="false" selected="true" text="Naujienos" toggleGroup="$group" />
   </children>
</AnchorPane>

错误

应用程序启动方法java.lang.Reflect.InvocationTargetException位于Sun.Reflect.NativeMethodAccessorImpl.Invoke0(本机方法)位于Sun.Reflect.NativeMethodAccessorImpl.Invoke(NativeMethodAccessorImpl.Invoke)(nativeMethodAccessorImpl.Invoke)(nativeMethodAccessorImpl.java:62)位于Sun.Reflect.DelegatingMethodAccessorImpl.java:43)位于pplication.launcherimpl.launchapplication1(launcherimpl.java:875)在com.sun.javafx.application.launcherimpl.lambda$launchapplication$147(Launche rimpl.java:157)在com.sun.javafx.application.launcherimpl.lambda$48/128893786在java.lang.thread.run(thread.java:745)运行(未知Sou rce)由:javafx.fxml.loadexception:/e:

共有1个答案

唐裕
2023-03-14

这里有两个问题:

  1. 控制器的构造函数必须是公共的。参见此线程以获得参考:FXML load期间的JavaFX IllegalAccessException()
  2. 控制器构造函数将无法工作,因为您正在尝试访问一个此时不可用的字段。

所以对于2。将ChangeLog.SetEffect(ds);从控制器移动到Initialize方法。

 类似资料:
  • 我试图创建一个应用程序,但我一直遇到相同的运行时异常。我已经和它斗争了好几天,我不知道如何修复它。任何建议都将不胜感激!这是我在Java中的第一个相当长的项目,所以我决心解决它;只是有相当多的麻烦,我不知道如何克服这一点。

  • 问题内容: 我只是从JavaFX开始,我正在尝试构建一个带有标签,文本字段和按钮的简单应用程序,单击该按钮即可将标签的值设置为文本字段的值。一切顺利,直到我将控制器连接到Main文件。这是我的代码: Main.java MainWindowView.fxml MainWindowController.java 我已经尝试过在StackOverflow上找到的多个答案,但是我发现的所有答案都是两年前

  • 我的主 LoginController.java 请注意,我还没有在userController.java中编写任何代码,我只是为user.fxml编写了ui 在javafx.fxml.fxmlloader.constructloadexception(fxmlloader.java:2597)在javafx.fxml.fxmlloader.access$100(fxmlloader.java:1

  • 乍一看,这个问题似乎是重复的。我已经在谷歌搜索了一些,但不幸的是,没有一个结果不符合我。我给出了下面的问题链接。 应用程序启动方法java.lang.Reflect.InvocationTargetException JavaFX图像转换中出现异常 JavaFX-应用程序启动方法中的异常? 应用程序启动方法中出现异常 堆栈跟踪: 无法从此StackTrace跟踪错误。然后我在start方法中使用了

  • 我刚刚开始使用JavaFX,我试图构建一个简单的应用程序,其中包含标签、文本字段和按钮,当单击这些按钮时,将标签的值设置为文本字段的值。在我把控制器连接到主文件之前,一切都很顺利。这是我的代码: 我尝试了在StackOverflow上找到的多个答案,但我找到的都是2年前的答案,对我的代码没有任何积极的影响。 编辑:在此处堆栈跟踪:

  • 堆栈跟踪 我试过关于这个话题的所有解答,但我总是得到同样的错误。