鱼C论坛

 找回密码
 立即注册
查看: 689|回复: 6

[已解决]jawafx MainController(控制器不会插入)-> fxml

[复制链接]
发表于 2023-7-10 14:35:49 | 显示全部楼层 |阅读模式
60鱼币
运行报错,不知道错哪里,请前辈指点
  1. package application;

  2. import javafx.beans.property.SimpleIntegerProperty;
  3. import javafx.beans.property.SimpleStringProperty;

  4. public class Book {
  5.     private SimpleStringProperty barcodeOfBook = null;
  6.     private SimpleStringProperty nameOfBook = null;

  7.     public Book(String barcode, String nameOfBook) {
  8.         this.barcodeOfBook = new SimpleStringProperty(barcode);
  9.         this.nameOfBook = new SimpleStringProperty(nameOfBook);
  10.     }

  11.     public String getBarcodeBook() {
  12.         return barcodeOfBook.get();
  13.     }

  14.     public SimpleStringProperty barcodeOfBookProperty() {
  15.         return barcodeOfBook;
  16.     }

  17.     public String getNameOfBook() {
  18.         return nameOfBook.get();
  19.     }

  20.     public SimpleStringProperty nameOfBookProperty() {
  21.         return nameOfBook;
  22.     }
  23. }
复制代码
  1. package application;
  2.        
  3. import javafx.application.Application;
  4. import javafx.fxml.FXMLLoader;
  5. import javafx.stage.Modality;
  6. import javafx.stage.Stage;
  7. import javafx.scene.Scene;
  8. import javafx.scene.layout.BorderPane;
  9. import javafx.scene.layout.Pane;


  10. public class MainApp extends Application
  11. {

  12.         @Override
  13.         public void start(Stage primaryStage) throws Exception
  14.         {
  15.                 FXMLLoader loader = new FXMLLoader(getClass().getResource("SamplePane.fxml"));
  16.                 primaryStage.setScene(new Scene(loader.load()));
  17.                 primaryStage.show();
  18.         }

  19.         public static void main(String[] args)
  20.         {
  21.                 launch(args);
  22.         }
  23. }
复制代码
  1. package application;

  2. import javafx.collections.FXCollections;
  3. import javafx.collections.ObservableList;
  4. import javafx.fxml.FXML;
  5. import javafx.scene.control.TableColumn;
  6. import javafx.scene.control.TableView;

  7. public class MainController {

  8.     @FXML
  9.     private TableView<Book> table;
  10.     @FXML
  11.     private TableColumn<Book, String> barcodeOfBookCol;
  12.     @FXML
  13.     private TableColumn<Book, String> nameOfBookCol;

  14.     private ObservableList<Book> cellData = FXCollections.observableArrayList();

  15.     public void initialize() {
  16.         // 初始化数据
  17.         loadData();

  18.         // 配置列的CellValueFactory
  19.         barcodeOfBookCol.setCellValueFactory(cellData -> cellData.getValue().barcodeOfBookProperty());
  20.         nameOfBookCol.setCellValueFactory(cellData -> (cellData.getValue().nameOfBookProperty()));

  21.         // 将数据设置到表格中
  22.         table.setItems(cellData);
  23.     }

  24.     private void loadData() {
  25.         // 添加示例数据
  26.         cellData.add(new Book("Alice", "25"));
  27.         cellData.add(new Book("Bob", "30"));
  28.         cellData.add(new Book("Charlie", "35"));
  29.     }
  30. }
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <?import javafx.scene.text.*?>
  3. <?import javafx.scene.*?>
  4. <?import java.lang.*?>
  5. <?import javafx.scene.control.*?>
  6. <?import javafx.scene.layout.*?>
  7. <?import javafx.scene.layout.BorderPane?>

  8. <fx:root type="BorderPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  9.    <top>
  10.       <MenuBar BorderPane.alignment="CENTER">
  11.         <menus>
  12.           <Menu mnemonicParsing="false" text="基本数据管理">
  13.             <items>
  14.                   <MenuItem mnemonicParsing="false" text="日常销售" />
  15.                   <SeparatorMenuItem mnemonicParsing="false" />
  16.                   <MenuItem mnemonicParsing="false" text="重新打印业务数据" />
  17.                   <SeparatorMenuItem mnemonicParsing="false" />
  18.               <MenuItem mnemonicParsing="false" text="退 出" />
  19.             </items>
  20.           </Menu>
  21.           <Menu mnemonicParsing="false" text="查询与修改">
  22.             <items>
  23.               <MenuItem mnemonicParsing="false" text="库存及相关查询" />
  24.             </items>
  25.           </Menu>
  26.           <Menu mnemonicParsing="false" text="基本数据管理">
  27.             <items>
  28.               <MenuItem mnemonicParsing="false" text="图书资料管理" />
  29.             </items>
  30.           </Menu>
  31.         </menus>
  32.       </MenuBar>
  33.    </top>
  34.    <center>
  35.       <StackPane layoutY="8.0">
  36.          <children>
  37.             <BorderPane>
  38.                <top>
  39.                   <Pane>
  40.                      <children>
  41.                         <Label alignment="CENTER" layoutX="24.0" layoutY="3.0" prefHeight="36.0" prefWidth="144.0" text="单号" textAlignment="CENTER">
  42.                            <font>
  43.                               <Font size="20.0" />
  44.                            </font>
  45.                         </Label>
  46.                         <TextArea editable="false" layoutX="230.0" layoutY="4.0" prefHeight="37.0" prefWidth="200.0" />
  47.                      </children>
  48.                   </Pane>
  49.                </top>
  50.                <center>
  51.                   <TableView fx:id="table" prefHeight="305.0" prefWidth="967.0" BorderPane.alignment="CENTER">
  52.                     <columns>
  53.                       <TableColumn fx:id="barcodeOfBookCol" prefWidth="153.0" resizable="false" text="书号" />
  54.                       <TableColumn fx:id="nameOfBookCol" prefWidth="117.0" resizable="false" text="书    名" />
  55.                         <TableColumn minWidth="0.0" prefWidth="94.0" resizable="false" text="单价" />
  56.                         <TableColumn minWidth="0.0" prefWidth="130.0" resizable="false" text="折扣" />
  57.                         <TableColumn prefWidth="130.0" resizable="false" text="价格" />
  58.                         <TableColumn prefWidth="130.0" resizable="false" text="数量" />
  59.                         <TableColumn prefWidth="150.0" resizable="false" text="码洋" />
  60.                         <TableColumn prefWidth="150.0" resizable="false" text="金额" />
  61.                     </columns>
  62.                   </TableView>
  63.                </center>
  64.                <bottom>
  65.                   <Pane BorderPane.alignment="CENTER">
  66.                      <children>
  67.                         <TextArea layoutX="52.0" layoutY="10.0" prefHeight="35.0" prefWidth="214.0" />
  68.                         <TextArea layoutX="428.0" layoutY="11.0" prefHeight="32.0" prefWidth="200.0" />
  69.                         <TextArea layoutX="663.0" layoutY="14.0" prefHeight="26.0" prefWidth="200.0" />
  70.                         <TextArea layoutX="918.0" layoutY="15.0" prefHeight="24.0" prefWidth="200.0" />
  71.                         <StackPane layoutX="-73.0" layoutY="-340.0" />
  72.                      </children>
  73.                   </Pane>
  74.                </bottom>
  75.             </BorderPane>
  76.          </children>
  77.       </StackPane>
  78.    </center>
  79.    <bottom>
  80.       <Pane prefHeight="65.0" prefWidth="1311.0" BorderPane.alignment="CENTER">
  81.          <children>
  82.             <TextField layoutX="213.0" layoutY="21.0" />
  83.             <TextArea layoutX="556.0" layoutY="22.0" prefHeight="22.0" prefWidth="200.0" />
  84.             <Button layoutX="949.0" layoutY="21.0" mnemonicParsing="false" prefHeight="23.0" prefWidth="162.0" text="Button" />
  85.          </children>
  86.       </Pane>
  87.    </bottom>
  88. </fx:root>
复制代码
最佳答案
2023-7-10 14:35:50
本帖最后由 wuliangtdi 于 2023-7-13 13:02 编辑
wow7jiao 发表于 2023-7-13 11:11
我现在只学了 java+mysql(有框架)+ javafx,c#会点,搭数据库一点不会 (增,删,改, 查 +框架),我 ...


C#和Java的基础语法差不多。可能需要学一点高级的用法。比如方法拓展、linq等(语法不会的,问问gpt呗。)。而且C#也可以用数据库啊。框架也有啊,像EFCore(这个是微软官方的)、Sqlsugar、Freesql等框架。之前用过JavaFx,但是没有用fxml这玩意。感觉不是很好用。就直接用纯代码撸 时间上来不及的话,可以先看看别人的教程啥的。
比如这位B站的UP主
Aimls

bookStore.zip

1.64 MB, 下载次数: 0

完整代码

最佳答案

查看完整内容

C#和Java的基础语法差不多。可能需要学一点高级的用法。比如方法拓展、linq等(语法不会的,问问gpt呗。)。而且C#也可以用数据库啊。框架也有啊,像EFCore(这个是微软官方的)、Sqlsugar、Freesql等框架。之前用过JavaFx,但是没有用fxml这玩意。感觉不是很好用。就直接用纯代码撸 时间上来不及的话,可以先看看别人的教程啥的。 比如这位B站的UP主 Aimls
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-10 14:35:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wuliangtdi 于 2023-7-13 13:02 编辑
wow7jiao 发表于 2023-7-13 11:11
我现在只学了 java+mysql(有框架)+ javafx,c#会点,搭数据库一点不会 (增,删,改, 查 +框架),我 ...


C#和Java的基础语法差不多。可能需要学一点高级的用法。比如方法拓展、linq等(语法不会的,问问gpt呗。)。而且C#也可以用数据库啊。框架也有啊,像EFCore(这个是微软官方的)、Sqlsugar、Freesql等框架。之前用过JavaFx,但是没有用fxml这玩意。感觉不是很好用。就直接用纯代码撸 时间上来不及的话,可以先看看别人的教程啥的。
比如这位B站的UP主
Aimls
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-10 14:36:00 | 显示全部楼层
根据您提供的代码和描述,有几个可能导致错误的地方:

1. 主控制器类(MainController)没有与FXML文件中的控件进行关联。请确保FXML文件中的TableViewTableColumn的fx:id属性与主控制器类中的对应字段名称相匹配。在您的代码中,TableView的fx:id为"table",TableColumn的fx:id为"barcodeOfBookCol"和"nameOfBookCol"。
2. 您没有将主控制器类与FXML文件进行绑定。在MainApp类的start方法中,您需要使用FXMLLoader的setController方法将主控制器类与FXML文件进行绑定。修改代码如下:
  1. FXMLLoader loader = new FXMLLoader(getClass().getResource("SamplePane.fxml"));
  2. loader.setController(new MainController());
  3. primaryStage.setScene(new Scene(loader.load()));
复制代码
3. 您可能忘记在FXML文件中导入主控制器类。请确保在FXML文件的根元素中添加fx:controller属性,并指定主控制器类的完整路径。例如:
  1. <fx:root type="BorderPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController">
复制代码

请检查这些可能的问题,看看是否可以解决您的错误。如果问题仍然存在,请提供详细的错误消息和堆栈跟踪信息,以便我能够更好地帮助您解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-13 08:52:20 | 显示全部楼层
我感觉wpf比javafx更适合(如果是需要跨平台的话,可以试试avalonia和CPF)

Avalonia

CPF
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-13 11:11:02 | 显示全部楼层
wuliangtdi 发表于 2023-7-13 08:52
我感觉wpf比javafx更适合(如果是需要跨平台的话,可以试试avalonia和CPF)

Avalonia

我现在只学了 java+mysql(有框架)+ javafx,c#会点,搭数据库一点不会 (增,删,改, 查 +框架),我现在转c#是不是学习量更大?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-13 16:34:32 | 显示全部楼层
wuliangtdi 发表于 2023-7-13 12:55
C#和Java的基础语法差不多。可能需要学一点高级的用法。比如方法拓展、linq等(语法不会的,问问gpt呗。 ...

正在看啊,animls的课程好长 ,200多节课,C#语法糖太多又不简洁,也很耗时间 ,两难。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-13 21:32:10 | 显示全部楼层
wow7jiao 发表于 2023-7-13 16:34
正在看啊,animls的课程好长 ,200多节课,C#语法糖太多又不简洁,也很耗时间 ,两难。。

那就kotlin
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表