Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—用另一个类的数据填充Jtable_Java_Swing_Jtable - Fatal编程技术网

Java—用另一个类的数据填充Jtable

Java—用另一个类的数据填充Jtable,java,swing,jtable,Java,Swing,Jtable,所以我有一个班级的JTable table = new JTable(); table.setModel(new DefaultTableModel( new Object[][] { }, new String[] { "Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH" } ));

所以我有一个班级的JTable

table = new JTable();
    table.setModel(new DefaultTableModel(
        new Object[][] {
        },
        new String[] {
            "Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH"
        }
    ));
    table.setBounds(35, 120, 507, 349);
    contentPane.add(table);
}
我想使用另一个类中的数据填充该表。 我有一个类用于显示处理后的数据(应用程序是关于使用tensorflow处理图像),变量为lat、lng、d1、d2、d3、d4,每个变量都包含数据

如何实现这一点?

在JTable实例上调用setModel()

例如,您只需从不同的源传递模型。比如:

setModel(simeOtherObject.generateTableModel());
换句话说:另一个类可以生成一个模型对象。或者它提供一些“中性”数据,例如列表,然后一些帮助程序代码将其转换为模型对象


老实说,让多个类以这种方式一起工作是Java的基本知识。如果这已经让您负担过重,那么在尝试创建复杂的GUI应用程序之前,您可能应该退后一步,学习更多的基础知识

有多种方法可以在
JTable
中添加/删除数据。下面的程序演示了
addRow()
setModel()
的使用

请注意,
addRow()
方法仅在
DefaultTableModel
中存在。因此,当您使用其他表模型时,必须使用不同的方法

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.awt.event.*;

public class PopulateTable
{
  public static void main(String[] args)
  {
    JTable table = new JTable();
    table.setModel(new DefaultTableModel(
        new Object[][] {
        },
        new String[] {
            "Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH"
        }
    ));

    JButton button1 = new JButton("Add First Row");
    button1.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        ((DefaultTableModel) table.getModel()).addRow(Data.getFirstRow());
      }
    });

    JButton button2 = new JButton("Set All Rows");
    button2.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        table.setModel(new DefaultTableModel(
            Data.getAllRows(),
            new String[] {
                "Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH"
            }
        ));
      }
    });

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(button1);
    buttonPanel.add(button2);

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
    frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
    frame.pack();
    frame.setVisible(true);
  }
}

class Data
{
  private static Object[][] rows = new Object[][] {
      {"a1", "b1", "c1", "d1", "e1", "f1", "g1"},
      {"a2", "b2", "c2", "d2", "e2", "f2", "g2"},
      {"a3", "b3", "c3", "d3", "e3", "f3", "g3"},
      {"a4", "b4", "c4", "d4", "e4", "f4", "g4"}
  };

  static Object[][] getAllRows()
  {
    return rows;
  }

  static Object[] getFirstRow()
  {
    return rows[0];
  }
}

是否可以在row对象中添加更多数据?谢谢你的回复@Ryan,你是说更改单个单元格的值?是的,这是可能的。如果要这样做,最好的方法是编写一个customer表模型。我的意思是在Row对象中添加更多数据。假设加上a5,b5,c5,…g5,我想再加上一些。可能吗?假设我想将用户输入存储在对象中,这是可能的,对吗?@Ryan,是的,这是可能的。