Java 为什么构造函数不能在下面的代码中工作?
在这里,我想使用构造函数动态分配表中的行数。 datamodel是类,datamodel(int count)方法分配行数Java 为什么构造函数不能在下面的代码中工作?,java,swing,jtable,abstracttablemodel,Java,Swing,Jtable,Abstracttablemodel,在这里,我想使用构造函数动态分配表中的行数。 datamodel是类,datamodel(int count)方法分配行数 import javax.swing.table.AbstractTableModel; @SuppressWarnings("serial") public class datamodel extends AbstractTableModel{ int row1; datamodel(int count){ row1 = count;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial")
public class datamodel extends AbstractTableModel{
int row1;
datamodel(int count){
row1 = count;
count = 0;
}
private String[] columnNames = {"Sl No","Material Code", "Material Name", "Select", "Received QTY", "Unit", "To Be Delivered", "PO No", "PO Sl"};//new String[9];
//table has 100 rows and 9 columns
private Object[][] data = new Object[row1][9];
public int getColumnCount() { return columnNames.length; }
public int getRowCount() { return data.length;}
public String getColumnName(int col) {
// TODO Auto-generated method stub
return columnNames[col];
}
public Object getValueAt(int row, int col) {
// TODO Auto-generated method stub
return data[row][col];
}
@Override
public void setValueAt(Object aValue, int row, int col) {
// TODO Auto-generated method stub
data[row][col] = aValue;
fireTableCellUpdated(row, col);
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return true;
}
public Class getColumnClass(int col) {
if((col == 4) || (col == 6))
return Double.class;
//return getValueAt(0, c).getClass();
else if(col == 3)
return Boolean.class;
else
return String.class;
}
}
这是一个abstracttablemodel,我想将行数传递给datamodel
int row1;
datamodel(int count){
row1 = count;
count = 0;
}
您正在将局部变量count
设置为零。这对字段行1
没有影响
现在,在仔细查看代码之后。强烈建议:缩进代码,遵守命名约定,并在文件顶部收集所有字段声明。这样我们就更容易理解代码了
int row1;
private Object[][] data = new Object[row1][9];
datamodel(int count) {
row1 = count;
count = 0;
}
您要做的是:使用构造函数传递值,以便初始化数组。您的方法将不起作用,因为数组是在构造函数方法get执行之前创建的。因此,无论使用构造函数传递什么,都始终有一个对象[0][9]
您应该改为在构造函数方法内创建数组:
int row1;
private Object[][] data;
datamodel(int count) {
row1 = count;
data = new Object[count][9];
}
您正在将局部变量count
设置为零。这对字段行1
没有影响
现在,在仔细查看代码之后。强烈建议:缩进代码,遵守命名约定,并在文件顶部收集所有字段声明。这样我们就更容易理解代码了
int row1;
private Object[][] data = new Object[row1][9];
datamodel(int count) {
row1 = count;
count = 0;
}
您要做的是:使用构造函数传递值,以便初始化数组。您的方法将不起作用,因为数组是在构造函数方法get执行之前创建的。因此,无论使用构造函数传递什么,都始终有一个对象[0][9]
您应该改为在构造函数方法内创建数组:
int row1;
private Object[][] data;
datamodel(int count) {
row1 = count;
data = new Object[count][9];
}
在哪里调用构造函数以及如何调用?作为旁白,请一致使用
@Override
。在哪里调用构造函数以及如何调用?作为旁白,请一致使用@Override
。