刷新 JTable 以便显示插入的数据

Refresh JTable so data inserted is shown

我正在做一个项目,我有两个 JFrame windows。第一帧显示空 table。它下方的按钮将打开第二个框架,其中应输入数据。我的问题是,当我在第二帧中单击 'ok' 时,第一帧中的 table 不会显示插入的数据。

我尝试了 jframe.revalidate();jframe.repaint() 以及 table.revalidate();table.repaint(); 但它不起作用。

此外,我正在使用 DefaultTableModel,所以我也尝试了 model.fireTableDataChanged();,但仍然没有。

//first jframe
public NewJFrame() {
    initComponents();
    setLocationRelativeTo(null);
    viewTable();
}

Object[] newRow;

public NewJFrame(Object[] newRow){
    initComponents();
    setLocationRelativeTo(null);
    this.newRow = newRow;
    addNewRow();
}

public void viewTable(){
    table.setFont(new Font("Segoe UI", Font.PLAIN, 16));
    JTableHeader tablehead1 = table.getTableHeader();
    tablehead1.setFont(new Font("Segoe UI", Font.PLAIN, 16));
    table.setRowHeight(30);

    TableColumnModel columnModel = table.getColumnModel();        
    columnModel.getColumn(0).setPreferredWidth(400);     //Name
    columnModel.getColumn(1).setPreferredWidth(100);    //Age
}

public void addNewRow(){
    DefaultTableModel model = (DefaultTableModel) table.getModel();
    model.addRow(newRow);
    System.out.println(newRow[0].toString() + newRow[1].toString()); //so i would know data is present
}

private void addActionPerformed(java.awt.event.ActionEvent evt) {                                    
    form f = new form();
    f.setVisible(true);
} 

//here's the second jframe
public form() {
    initComponents();
    setLocationRelativeTo(null);
}

private void OKActionPerformed(java.awt.event.ActionEvent evt) {                                   
    Object[] input = { name.getText(), age.getText() };

    if(input.equals("")){
        System.out.println("empty");
    } else {
        NewJFrame n = new NewJFrame(input);
        n.revalidate();
        n.repaint();
        this.setVisible(false);
    }

您的问题是您将输入数据传递给 new NewJFrame 而不是现有的。解决方案是不这样做,将其传递给现有的 和当前显示的 NewJFrame 实例。如何?取决于你的代码。请注意,第二个 "JFrame" 应该是 JDialog,可能是 modal JDialog.