Java 如何在JTable中显示对象数组?

Java 如何在JTable中显示对象数组?,java,swing,jtable,tablemodel,Java,Swing,Jtable,Tablemodel,这是我正在使用的代码,但当我试图打印dataArray对象时,数据不会显示在JTable中。可以使用要打印对象数组值的表的哪些模型属性以及如何使用 public class ShowAddressForm extends javax.swing.JFrame { Object data[][]; Object dataArray[][]; int count = 0; String st; public ShowAddressForm(String f

这是我正在使用的代码,但当我试图打印
dataArray
对象时,数据不会显示在
JTable
中。可以使用要打印对象数组值的表的哪些模型属性以及如何使用

public class ShowAddressForm extends javax.swing.JFrame {

    Object data[][];
    Object dataArray[][];
    int count = 0;
    String st;

    public ShowAddressForm(String fname , String str) {
        super(fname);
        st = str;
        initComponents();

        fillTable();
    }

    public void fillTable()
    {
int count = 0;
        String str;

        try
        {
            BufferedReader br = new BufferedReader(new FileReader("D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile"));

            while((str = br.readLine()) != null)
            {
                count++;
            }
            br.close();
        } catch (Exception e)
        {

        }

        Object id;
        Object name;

        data = new Object[count][7];

        int i = 0 , j = 0 , m;

        try
        {
            BufferedReader buffrea = new BufferedReader(new FileReader("D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile"));

            while((str = buffrea.readLine()) != null)
            {
                StringTokenizer token = new StringTokenizer(str , "*");

                int n = token.countTokens();

                id = token.nextElement();
                name = token.nextElement();

                String strNameLow = name.toString().toLowerCase();
                String strNameUpp = name.toString().toUpperCase();

                if(strNameLow.startsWith(st.toLowerCase()) || strNameUpp.startsWith(st.toUpperCase()))
                {
                    data[i][0] = id;
                    data[i][1] = name;

                    for(j = 2 ; j < n ; j++)
                    {
                        data[i][j] = token.nextElement();
                    }
                    i = i + 1;
                }
            }

            buffrea.close();
        } catch(IOException ioe){
            System.out.println("Error : " + ioe.toString());
        }

        dataArray = new Object[i][7];
        for(int a = 0 ; a < i ; a++)
        {
            for(int b = 0 ; b < 7 ; b++)
            {
                dataArray[a][b] = data[a][b];
            }
        }

        //Here is the code to print dataArray object which i used but it is not working, when i am run my program it is print "[Ljava.lang.Object;@1cc2e30" in table's first cell[0][0] position  

        DefaultTableModel model = (DefaultTableModel)this.data_table.getModel();
        model.addRow(dataArray);
}
public类ShowAddressForm扩展了javax.swing.JFrame{
对象数据[];
对象数据数组[];
整数计数=0;
字符串st;
公共ShowAddressForm(字符串fname,字符串str){
超级(fname);
st=str;
初始化组件();
fillTable();
}
公共void fillTable()
{
整数计数=0;
字符串str;
尝试
{
BufferedReader br=新的BufferedReader(新的文件阅读器(“D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile”);
而((str=br.readLine())!=null)
{
计数++;
}
br.close();
}捕获(例外e)
{
}
对象id;
对象名称;
数据=新对象[计数][7];
int i=0,j=0,m;
尝试
{
BufferedReader buffrea=新的BufferedReader(新的文件读取器(“D:\\JavaPrograms\\Contact Management System\\InputFiles\\AddressFile”);
while((str=buffrea.readLine())!=null)
{
StringTokenizer令牌=新的StringTokenizer(str,“*”);
int n=token.countTokens();
id=token.nextElement();
name=token.nextElement();
字符串strNameLow=name.toString().toLowerCase();
字符串strNameUpp=name.toString().toUpperCase();
if(strNameLow.startsWith(st.toLowerCase())| | strNameUpp.startsWith(st.toUpperCase())
{
数据[i][0]=id;
资料[i][1]=姓名;
对于(j=2;j
我在这样一个JTable中填充了数据。您可能想尝试将其调整到您的代码中。变量和内容是西班牙语的,只需替换为您需要的内容即可。在我的示例中,它是一个表,有4列,表示日期、分数、持续时间和最大查看器

    private void fillJTable(){
        //creating data to add into the JTable. Here you might want to import your proper data from elsewhere
        Date date = new Date();

        UserReplay rep1 = new UserReplay(date, 12, 13,14);
        UserReplay rep2 = new UserReplay(date, 2,34,5);

        ArrayList<UserReplay> usuaris = new ArrayList<>();
        usuaris.add(rep1);
        usuaris.add(rep2);
//----Filling Jtable------
        DefaultTableModel model = (DefaultTableModel) view.getTable().getModel();
        model.addColumn("Fecha");
        model.addColumn("Puntuación");
        model.addColumn("Tiempo de duración");
        model.addColumn("Pico máximo de espectadores");

        for (int i = 0; i < usuaris.size(); i++){
            Vector<Date> fecha = new Vector<>(Arrays.asList(usuaris.get(i).getDate()));
            Vector<Integer> puntuacion = new Vector<>(Arrays.asList(usuaris.get(i).getPuntuacion()));
            Vector<Integer> tiempo = new Vector<>(Arrays.asList(usuaris.get(i).getTiempo()));
            Vector<Integer> espectadors = new Vector<>(Arrays.asList(usuaris.get(i).getTiempo()));

            Vector<Object> row = new Vector<Object>();
            row.addElement(fecha.get(0));
            row.addElement(puntuacion.get(0));
            row.addElement(tiempo.get(0));
            row.addElement(espectadors.get(0));
            model.addRow(row);
        }

    }
private void fillJTable(){
//正在创建要添加到JTable中的数据。在这里,您可能希望从其他地方导入正确的数据
日期=新日期();
UserReplay rep1=新的UserReplay(日期12,13,14);
UserReplay rep2=新的UserReplay(日期,2,34,5);
ArrayList usuaris=新的ArrayList();
高利贷增加(rep1);
高利贷。添加(rep2);
//----填充Jtable------
DefaultTableModel=(DefaultTableModel)view.getTable().getModel();
模型。添加柱(“Fecha”);
model.addColumn(“Puntuación”);
model.addColumn(“Tiempo de duración”);
模型添加柱(“Pico máximo de Spectadores”);
对于(int i=0;i
1)为了更快地获得更好的帮助,请发布一个or。使用一些硬编码数据替换文本文件。2)“在Netbeans中的java中”解决方案可以在java代码中找到,而不是在IDE中,因此“Netbeans”是不相关的。3)
catch(异常e){
不要忽略异常!异常会准确地告诉我们出了什么问题。除非实现日志记录,否则至少调用
Throwable.printStackTrace()
。您永远不会将JTable/JScrollPane添加到框架中