添加一行并修改来自其他class的JTable的标题?

Add a row and modify the title of a JTable from an other class?

我的 class Table.java 中有一个名为 create() 的方法,它创建了一个 JTable。

但我想知道如何将它添加一行,以及如何修改另一个 class 的标题(使用 Table.addRow()Table.setTitle() 之类的方法),因为大约 30 分钟后,我在 Google 上找不到它,而且我不知道该怎么做,因为我没有在 Java 中进行过实验,请将我视为初学者。

这是我的 Table.java class 和我的 create() 方法:

package fr.laiteux.test.gui;

import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class Table{

    public static void create(String name, double version, String author, int largeur, int hauteur){

        JFrame frame = new JFrame(String.format(name + " " + version + " by " + author));;

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(largeur, hauteur);

        Container container = frame.getContentPane();

        DefaultTableModel model = new DefaultTableModel(new Object[]{"Username", "Email", "Name", "Birthday", "Phone"}, 0);

        JTable table = new JTable(model);

        table.setVisible(true);

        JScrollPane scrollPane = new JScrollPane(table);

        table.setFillsViewportHeight(true);

        DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
        centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);

        table.getColumnModel().getColumn(1 - 1).setCellRenderer(centerRenderer);
        table.getColumnModel().getColumn(2 - 1).setCellRenderer(centerRenderer);
        table.getColumnModel().getColumn(3 - 1).setCellRenderer(centerRenderer);
        table.getColumnModel().getColumn(4 - 1).setCellRenderer(centerRenderer);
        table.getColumnModel().getColumn(5 - 1).setCellRenderer(centerRenderer);

        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
        table.setRowSorter(sorter);

        container.add(scrollPane);

        frame.setVisible(true);

    }

}

这个方法简单,写出来就行了

public class Table{

    ....

    public static setTitle(String title){
        ...
    }

    ...
}

当然,要能够在此范围之外更新实例,您需要更新当前方法来存储实例。

由于您处于静态上下文中,只需执行

public class Table{

    private static Jframe frame;
    private static JTable table;

    public static void create(String name, double version, String author, int largeur, int hauteur){

        frame = new JFrame(String.format(name + " " + version + " by " + author));; // Not that I remove the declaration here to use the global variable

当然,用实例变量会更好,但是你用的是静态方法,所以我就这样了