猿问

Java - 用来自另一个类的数据填充Jtable

所以我在一个类上有一个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);

}

我想使用来自另一个类的数据填充表。我有一个用于显示已处理数据的类(应用程序是关于使用张量流处理图像的),变量为lat,lng,d1,d2,d3,d4,每个变量都包含数据。


我如何做到这一点?


蓝山帝景
浏览 151回答 2
2回答

慕娘9325324

您可以在 JTable 实例上调用 setModel()。例如,您只需要从其他源传递模型即可。喜欢:setModel(simeOtherObject.generateTableModel());换句话说:另一个类可以生成一个模型对象。或者,它提供了一些“中性”数据(如列表),然后一些帮助程序代码将其转换为 Model 对象。老实说,让多个类以这种方式协同工作是基本的Java知识。如果这已经使您负担过重,那么在尝试创建复杂的GUI应用程序之前,您应该退后一步并学习更多基础知识。

慕森卡

有多种方法可以在 中添加/删除数据。下面的程序演示了 和 的用法。JTableaddRow()setModel()请注意,方法仅在 中存在。因此,当您使用其他表模型时,必须使用不同的方法。addRow()DefaultTableModelimport 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];  }}
随时随地看视频慕课网APP

相关分类

Java
我要回答