添加一行并从其他类修改JTable的标题?

时间:2017-04-13 08:53:39

标签: java swing jframe jtable

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

但我想知道如何添加一行,以及如何从其他类修改标题(使用Table.addRow()Table.setTitle()之类的方法),因为我找不到它从30分钟开始在Google上,我不知道怎么做,因为我没有用Java进行过实验,认为我是初学者。

这是我的Table.java课程,其中包含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);

    }

}

1 个答案:

答案 0 :(得分:1)

由于这是一个简单的方法,你只需要编写它。

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

当然,使用实例变量会更好,但是你使用静态方法,所以我会这样离开