gpt4 book ai didi

java - 如何将不同类的数据添加到jtable?

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:08 24 4
gpt4 key购买 nike

我正在开发一个基于杂货产品的 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 中的行(在窗口包中的 windows 类中定义)中?我知道行的数据必须插入到 tableModel 中才能显示该行。现在,我面临的问题是我正在从另一个包中的另一个类中执行此操作,那么如何将文本文件中的字段从 io 包中的类添加到 window 包中的类中的行数据?

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());

}
}
}

最佳答案

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

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

关于java - 如何将不同类的数据添加到jtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com