基本上我有一种方法可以从文本文件中读取并向jTable
添加行。这已经得到了解决,一切正常。我想要的是添加行效果。我希望jTable一次一行地添加,而不是一次添加所有行。
我使用java.swing.Timer找到了类似的解决方案,但它对我不起作用。
下面我有一个从文本文件中读取的方法,添加到jTable和Timer以暂停每行的插入行进程(我的预期目的)。 Timer工作正常,但不是延迟行,而是延迟整个表。所以当我点击按钮时,表格等待2秒钟并吐出整行。我怎样才能像peekillet的UPDATE#2那样逐行实现添加。任何帮助将不胜感激!
private void addActionPerformed(java.awt.event.ActionEvent evt) {
addData();
}
public void addData(){
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
FileInputStream fstream = new FileInputStream("\\data.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String line;
DefaultTableModel model = (DefaultTableModel) resultTable.getModel();
while((line = br.readLine()) != null){
model.addRow(new Object[]{line});
//System.out.println(strLine);
}
fstream.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(PIIFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(PIIFrame.class.getName()).log(Level.SEVERE, null, ex);
}
repaint();
}
});
timer.setRepeats(false);
timer.start();
}
答案 0 :(得分:3)
{1}}的操作处理程序在EDT上执行,这意味着您在阅读文件时阻止了EDT。在这种情况下,计时器唯一要做的就是将文件读取延迟2秒。
你不需要计时器来做这件事,你可以做这样的事情。
Timer