Я загружаю свои данные из текстового файла в JTable, и внутри текстового файла нет названия столбцов. Потому что я задаю имя столбца JTable в свойствах. Я использую extends AbstractTableModel для достижения этой цели.
Я следую некоторому замечательному учебнику https://www.rgagnon.com/javadetails/java-0213.html. Но мне не нужно имя столбца, потому что я уже установил его в свойствах JTable.
package leaveappsysgui;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class EmpDataTabelModel extends AbstractTableModel{
private FileInputStream fis;
private BufferedReader br;
private StringTokenizer st1, st2;
protected Vector data;
protected Vector columnNames ;
protected String datafile, line;
public EmpDataTabelModel(String f) {
this.datafile = f;
initVectors();
}
public void initVectors(){
data = new Vector();
columnNames = new Vector();
try{
fis = new FileInputStream(datafile);
br = new BufferedReader(new InputStreamReader(fis));
// extract column names
st1 = new StringTokenizer(br.readLine(), ",");
while(st1.hasMoreTokens())
columnNames.addElement(st1.nextToken());
//extractd data
while((line = br.readLine()) != null){
st2 = new StringTokenizer(line, ",");
while(st2.hasMoreTokens()){
data.addElement(st2.nextToken());
}
}
br.close();
}catch(Exception e){
e.printStackTrace();
System.out.println("Error here");
}
}
@Override
public int getRowCount() {
return data.size() / getColumnCount();
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int columnIndex) {
String colName = "";
if (columnIndex <= getColumnCount()){
colName = (String)columnNames.elementAt(columnIndex);
}
return colName;
}
@Override
public Class getColumnClass(int columnIndex) {
return String.class;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return (String)data.elementAt( (rowIndex * getColumnCount()) + columnIndex);
}
}
Я пытаюсь удалить переопределенные столбцы, но получаю ошибку. Как расширить AbstractTableModel без переопределения столбцов. Я надеюсь, что вы все понимаете.