Java - заполнение Jtable данными из другого класса - PullRequest
1 голос
/ 12 марта 2019

Итак, у меня есть 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 с каждой переменной, содержащей данные.

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы вызываете setModel () для своего экземпляра JTable.

Например, вам просто нужно передать модель из другого источника.Как:

setModel(simeOtherObject.generateTableModel());

Другими словами: другой класс может генерировать модельный объект.Или он предоставляет некоторые «нейтральные» данные, такие как список, а затем некоторый вспомогательный код превращает их в объект Model.

Где, если честно: совместное использование нескольких классов является базовым знанием Java.Если это уже перегружает вас, то вам, вероятно, следует на мгновение отступить и изучить дополнительные основы, прежде чем пытаться создавать сложные приложения с графическим интерфейсом.

0 голосов
/ 12 марта 2019

Существует несколько способов добавить / удалить данные в 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];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...