java - 为什么我无法使用表列设置 JTable

标签 java swing jtable tablemodel columnheader

我在项目中使用 JTable、JTableModel。我无法使用列标题和空数据启动表格。你可以帮我吗?谢谢。 这是我的代码

主代码类

  public class MainCode extends JFrame{
       public MainCode(){
  ...........other codes here........
  MyTableModel tm= new MyTableModel();
  MyTable table=new MyTable(tm);
  //JTable table=new JTable(tm); if I write this line,I see column names.
  table.setPreferredScrollableViewportSize(new Dimension(480,80));
  table.setFillsViewportHeight(true);
  JScrollPane scrollPanetable=new JScrollPane(table);
  frame.getContentPane().add(scrollPanetable)
  ........another codes...........  

 }
}

MyTable 类

public class MyTable extends JTable{
public MyTable(){

}
public MyTable(int row,int col){
    super(row,col);
}
@Override
public void tableChanged(TableModelEvent e){
    super.tableChanged(e);
    repaint();
    System.out.println("public void tableChanged(TableModelEvent e)");
}

}

MyTableModel 类

public class MyTableModel extends AbstractTableModel{
   private String[] columnNames; 
   private Object[][] data;
public MyTableModel(){
    super();
    columnNames=new String[]{"A","B","C"};
    data=new Object[][]{ {null,null,null}};
}
public int getColumnCount() {
    return columnNames.length;
}

public int getRowCount() {
    return data.length;
}

public String getColumnName(int col) {
    return columnNames[col];
}

public Object getValueAt(int row, int col) {
    return data[row][col];
}
 }

它不是以列名开头。这段代码有什么问题。我看到下图。 enter image description here

最佳答案

因为 MyTable 中没有采用参数 MyTableModel 的构造函数。

您正在创建这样的表:

MyTable table=new MyTable(tm);

所以你必须在 MyTable 中有这样的构造函数:

class MyTable extends JTable {

   public MyTable(MyTableModel tm){
        super(tm);
    }
}

如果您在此处发布了 MyTable 代码,您的代码将无法编译!

关于java - 为什么我无法使用表列设置 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410812/

相关文章:

java - 如何将java编译器错误复制到Windows中的文件

java - 当 Eclipse 重新加载上下文时关闭池/缓存(使用单例创建的缓存)中的连接

java - HashMap 对象键

java - 通过 JButton 从 JTextField 获取字符串

java - 有没有一种简单的方法可以实现带有两条输入线的对话框? ( java )

java - 将JTable内容保存到文本文件并读取

java - 修补企业 Java 系统的最佳实践?

java - 如何在 JTextField 中删除文本?

java - 内联编辑后更新 JTable

java - JTable 中的搜索结果