我正在使用摆动工作人员验证文件, 我想将startLine和endLine发送到验证类,因为我不想每次都验证整个文件。当第一次当一个现有的文件是openend时,我想发送startLine 0和endLine as endLine = editorTextArea.getLineCount() - 1 ;.在那之后,我应该可以每秒钟将startLine和endLine发送到我方便的地方。我如何实现这一目标?在不同参数的不同位置调用摆动工作人员
Validate类:
class Validate implements Runnable {
private JTextArea editorTextArea;
private JTextArea errorTextArea;
private int startLine;
private int endLine;
public Validate(JTextArea editor, JTextArea error, startLine, endLine) {
this.editorTextArea = editor;
this.errorTextArea = error;
this.startLine = startLine;
this.endLine = endLine;
}
@Override
public void run() {
SwingWorker worker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
//CODE TO VALIDATE
return null;
}
@Override
protected void done() {
//CODE TO DISPLAY THE RESULT
}
};
worker.execute();
}
}
主类:
//Calls the validate
public void taskExecutor() {
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();
final ScheduledFuture<?> timeHandle =
scheduler.scheduleAtFixedRate(new Validate(editorTextArea, errorTextArea), 0, 1, SECONDS);
}
private void openFileActionPerformed(java.awt.event.ActionEvent evt) {
fileChooser.setCurrentDirectory(new File(".txt"));
int result = fileChooser.showOpenDialog(new JPanel());
int totLines = 0;
String[] content = null;
if (result == JFileChooser.APPROVE_OPTION) {
try {
filename = String.valueOf(fileChooser.getSelectedFile());
setTitle(filename);
FileReader fr = new FileReader(filename);
editorTextArea.read(fr, null);
fr.close();
startLine = 0;
endLine = editorTextArea.getLineCount() - 1;
//here i want to call the validate class once. that is askExecutor();
} catch (IOException ex) {
System.out.println(ex);
}
}
}
谢谢。我删除了runnable,这个场景是,当文件被打开时,文件应该被完全验证,我可以通过发送行号0和totallines来完成。但是,从下一次开始,即在jtextarea中对文件进行修改/更正时,只对在视口中可见的部分执行验证。我应该在什么事件中调用swingworker进行验证,是否需要将documentListener的insertUpdate方法放入? – FirmView 2012-03-11 12:18:29
@FirmView:啊,我误解了。它认为将行号作为参数传递给工人的构造函数。更多上面。 – trashgod 2012-03-11 17:28:33
我为你付出了努力。我在问什么事情我应该叫秋千工人。第一次,它将在文件打开,那么我应该不得不称之为文档监听器的方法? – FirmView 2012-03-11 20:31:44