Vorrei modificare questa classe in modo che invece della classe AbstractListModel mi implemeti la classe DefaultTableModel e mi inserisce delle righe ad una tabella invece di inserire i valori che legge in una lista.
il problema è implementare la funzione fireIntervalAdded(readfile.this, last + 1, current);
Mi potete aiutare?
public class readfile extends AbstractListModel {
private static Logger logger =
Logger.getLogger(readfile.class.getName());
private RandomAccessFile lineCounterFile;
private List linePositions =
Collections.synchronizedList(new ArrayList());
private RandomAccessFile readerFile;
public readfile(File file) throws FileNotFoundException {
this.lineCounterFile = new RandomAccessFile(file, "r");
this.readerFile = new RandomAccessFile(file, "r");
Runnable lineCounterThread = new Runnable() {
public void run() {
try {
String line;
linePositions.add( new Long(0) );
while ((line = lineCounterFile.readLine()) != null) {
linePositions.add(Long.toString(lineCounterFile.ge tFilePointer()));
Thread.yield();
}
linePositions.remove(linePositions.size()-1);
} catch (IOException ex) {
logger.log(Level.SEVERE, "", ex);
}
}
};
Executors.newSingleThreadExecutor().submit(lineCou nterThread);
Runnable firer = new Runnable() {
public void run() {
int last = -1;
int current = linePositions.size()-1;
if (last < current) {
fireIntervalAdded(readfile.this, last + 1, current);
last = current;
}
}
};
Executors.newScheduledThreadPool(1).scheduleAtFixe dRate(firer, 2, 500,
TimeUnit.MILLISECONDS);
}
public int getSize() {
return linePositions.size();
}
public Object getElementAt(int index) {
try {
readerFile.seek(Long.parseLong(""+linePositions.ge t(index)));
return readerFile.readLine();
} catch (IOException ex) {
logger.log(Level.SEVERE, "", ex);
return null;
}
}
}

Rispondi quotando