Java 如何从不同的类向jtable添加数据?

Java 如何从不同的类向jtable添加数据?,java,io,jtable,package,Java,Io,Jtable,Package,我正在从事一个基于groceryproducts的GUI项目。对于该程序,我有四个窗口(第一个窗口是主窗口,第二个窗口用于向库存添加产品并在分隔文本文件中添加产品,第三个窗口用于从库存中删除产品并将其从分隔文本文件中删除,第四个窗口用于显示从分隔文本文件添加到库存中的产品),我已经完成了三个窗口的制作,但在展示添加到库存中的产品时,我似乎被卡住了。为了查看产品,我在windows包中有一个文件,其中包含不同窗口的所有窗口类,其中添加了viewGroceryProductInventory类JTa

我正在从事一个基于groceryproducts的GUI项目。对于该程序,我有四个窗口(第一个窗口是主窗口,第二个窗口用于向库存添加产品并在分隔文本文件中添加产品,第三个窗口用于从库存中删除产品并将其从分隔文本文件中删除,第四个窗口用于显示从分隔文本文件添加到库存中的产品),我已经完成了三个窗口的制作,但在展示添加到库存中的产品时,我似乎被卡住了。为了查看产品,我在windows包中有一个文件,其中包含不同窗口的所有窗口类,其中添加了viewGroceryProductInventory类JTable

    package prog24178.javaassassins.project.window;
    import java.util.ArrayList;
    import javax.swing.*;
    import javax.swing.table.*;
    import prog24178.javaassassins.guiproject.GroceryProduct;
    import prog24178.javaassassins.project.io.ViewProductsFromInventory;

  /**
    *
    * @author Bharat
    */
    public class ViewGroceryProductsWindow extends JPanel {

    //Create table with column names



                private String[] columnNames = {"Name of Product"
                                    ,"UPC Code","Price","Stock"
                                    ,"International","Department"};
                private Object[][] data = {};
                private DefaultTableModel tableModel = 
                               new DefaultTableModel(data,columnNames);
                private JTable table = new JTable(tableModel);



                public ViewGroceryProductsWindow(){
                JScrollPane jscroll = new JScrollPane(table);

                this.add(jscroll);


                tableModel.addRow(data);
         }

    }
我有另一个io包,其中有不同的类要删除,并将产品添加到分隔文本文件中。对于ViewAGroceryProductInInventory类,我已经完成了从文件中提取数据的工作,但是现在我应该如何将字段添加到JTable中的行中,JTable是在windows包中的windows类中定义的?我知道行的数据必须插入到tableModel中才能显示行。现在,我面临的问题是,我正在从另一个包中的另一个类执行此操作,那么如何从io包中的类将文本文件中的字段添加到窗口包中的类中的行数据

package prog24178.javaassassins.project.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import prog24178.javaassassins.guiproject.GroceryProduct;


/**
  *
  * @author Bharat
  */
 public class ViewProductsFromInventory{    


       Scanner input = null;  
       int counter = 0;

       public ViewProductsFromInventory(){

             File file = new File("GroceryProduct.txt");
             if(!file.exists()){
                    System.out.println("GroceryProduct.txt doesn't exist");
                    System.exit(0);
             }

             try{

                  input = new Scanner(file);
                  ArrayList<GroceryProduct> inventory = new ArrayList();
                  int counter=0;
                  while(input.hasNext()){

                       String record = input.next();      
                       String[] fields = record.split("\\|");

                       String nameOfProduct= fields[0];

                       String upcCodeOfProduct = fields[1];


                       double priceOfProduct = Double.parseDouble(fields[2]);
                       Boolean productInStock = Boolean.parseBoolean(fields[3]);
                       Boolean FromInternational = Boolean.parseBoolean(fields[4]);
                       String productDepartment = fields[5];                
                       GroceryProduct groceryProduct = 
                                      new GroceryProduct(nameOfProduct,
                                                        upcCodeOfProduct,priceOfProduct,
                                                         productInStock,
                                                       FromInternational,
                                                     productDepartment);


                       inventory.add(groceryProduct);

               }
                input.close();

               }catch(FileNotFoundException ex){

                System.out.print(ex.getLocalizedMessage());

             }
      }
   }
包prog24178.javasuggers.project.io;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.Scanner;
导入javax.swing.JFrame;
导入javax.swing.JOptionPane;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.table.DefaultTableModel;
导入prog24178.java刺客.guiproject.GroceryProduct;
/**
*
*@作者巴拉特
*/
公共类ViewProductsFromInventory{
扫描仪输入=空;
int计数器=0;
public ViewProductsFromInventory(){
File File=新文件(“GroceryProduct.txt”);
如果(!file.exists()){
System.out.println(“GroceryProduct.txt不存在”);
系统出口(0);
}
试一试{
输入=新扫描仪(文件);
ArrayList inventory=新的ArrayList();
int计数器=0;
while(input.hasNext()){
String record=input.next();
String[]fields=record.split(“\\\\”);
产品的字符串名称=字段[0];
字符串upcCodeOfProduct=字段[1];
产品的双重价格=double.parseDouble(字段[2]);
Boolean productInStock=Boolean.parseBoolean(字段[3]);
Boolean FromInternational=Boolean.parseBoolean(字段[4]);
字符串productDepartment=字段[5];
食品杂货店产品食品杂货店产品=
新食品杂货店产品(产品名称,
UPCCodeof产品,产品价格,
产品库存,
来自国际,
生产部);
存货。添加(食品杂货产品);
}
input.close();
}捕获(FileNotFoundException ex){
System.out.print(例如getLocalizedMessage());
}
}
}

列名和行数据是程序数据模型的一部分,因此我将为
ProductsFromInventory
提供一个公共
getModel()
方法,该方法返回一个完全构造的
TableModel
,适合初始化
JTable
视图


如果允许定义格式,可以将文件名作为参数提供给构造函数,并从文件的第一行读取(分隔的)名称。

列名和行数据是程序数据模型的一部分,因此我给
ProductsFromInventory
一个公共
getModel()
方法,该方法返回完全构造的
表格模型
,适合初始化
JTable
视图

如果允许定义格式,则可以将文件名作为参数提供给构造函数,并从文件的第一行读取(分隔的)名称