我在项目中使用 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];
}
}
它不是以列名开头。这段代码有什么问题。我看到下图。
最佳答案
因为 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/