java - 向 JTable 添加一列,UI 不会改变

标签 java swing jtable

当我向 JTable 添加列时。表模型已更改,但表 UI 未更改。我调用了revalidate()repaint()updateUI(),...都不起作用。

这是代码的一部分:

public void insertColumn(int col, String columnName){
    this.columnIdentifiers.add(col, columnName);
    for (Object row: this.dataVector) {
        ((Vector) row).add(col, null);
    }
    fireTableStructureChanged();
}

model.insertColumn(col + 1, el);

最佳答案

这是我使用的片段,

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Main {
  public static void main(String[] argv) throws Exception {
    DefaultTableModel model = new DefaultTableModel();
    JTable table = new JTable(model);
    model.addColumn("Col1");
    model.addRow(new Object[] { "r1" });
    model.addRow(new Object[] { "r2" });
    model.addRow(new Object[] { "r3" });

    Vector data = model.getDataVector();
    Vector row = (Vector) data.elementAt(1);

    int mColIndex = 0;
    List colData = new ArrayList(table.getRowCount());
    for (int i = 0; i < table.getRowCount(); i++) {
      row = (Vector) data.elementAt(i);
      colData.add(row.get(mColIndex));
    }

    // Append a new column with copied data
    model.addColumn("Col3", colData.toArray());

    JFrame f = new JFrame();
    f.setSize(300, 300);
    f.add(new JScrollPane(table));
    f.setVisible(true);
  }
}

关于java - 向 JTable 添加一列,UI 不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639984/

相关文章:

java - int 值的验证

java - Swing Java 中带有多框架应用程序的任务栏图标

java - 使用 Java 实现工作站锁监听器

java - 无法选择复选框——它们是可编辑的! Java Swing

java - 为 PhantomReference 应用程序创建可重复的测试

java - 混合字节数组android

Java WindowsBuilder 应用程序编译时带有终止消息

java - 如何实现具有可变行高的jtable

java - 如果在 JTable 中选择

java - 接近警报触发两次?