0
我想在javafx中做一个tableview,它可以实时显示我添加的行,我的目标是编写一个程序,它可以将表中的行逐行导入,我尝试了下面的代码:如何在JavaFx中显示TableView中的即时更改?
public class Controller implements Initializable {
@FXML
private TableView<Logs> table;
@FXML
private TableColumn<Logs, Integer> numCol;
@FXML
private TableColumn<Logs, Integer> nameCol;
@FXML
private TableColumn<Logs, String> familyCol;
@FXML
private TableColumn<Logs, String> JobCol;
private int num = 1;
private List<Logs> listLogs = new ArrayList();
private ObservableList<Logs> observableListlogs;
public Controller() {
}
@Override
public void initialize(URL location, ResourceBundle resources) {
numCol.setCellValueFactory(new PropertyValueFactory<Logs, Integer>("num"));
nameCol.setCellValueFactory(new PropertyValueFactory<Logs, Integer>("name"));
familyCol.setCellValueFactory(new PropertyValueFactory<Logs, String>("family"));
jobCol.setCellValueFactory(new PropertyValueFactory<Logs, String>("job"));
observableListlogs = FXCollections.observableArrayList(listLogs);
table.setItems(observableListlogs);
}
@FXML
private void captureEvents() {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \"C:\\Users\\a\\Desktop\\users\"&& user.exe");
builder.redirectErrorStream(true);
try {
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line ;
int lineNumber=1;
while (true) {
line = r.readLine();
if (line==null)
break;
parseLine(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void parseLine(String line) {
Pattern p = Pattern.compile("<name>(.*?)</name><family>(.*?)</family><Job>(.*?)</Job>
Pattern p1 = Pattern.compile("<exceed>(.*?)</exceed>");
Matcher m = p.matcher(line);
Matcher m1 = p1.matcher(line);
if (m.find()) {
try {
Logs log = new Logs(num++, m.group(1).toString(),
m.group(2).toString(), m.group(3).toString());
observableListlogs.add(log));
} catch (Exception e) {
e.printStackTrace();
}
} else
if (m1.find()) {
try{
Logs log = new Logs(num++, m1.group(1));
observableListlogs.add(log));
}catch (Exception e){
e.printStackTrace();
}
}
}
}
但不幸的是我没有看到,直到一些异常的的tableView的内容(我用我自己让我可以看到的tableView的内容,应用程序被锁定,直到发生异常)(我的意思是,当行添加到表中时,它不会一一显示我,在异常发生后它会突然显示表视图的所有内容,我需要以实时方式向我显示内容e) 我应该怎么做才能在表格视图中看到即时更改?
感谢您的及时回复,请您详细解释一下吗?或给我一些例子,我该如何解决这个问题 – ATA
@ATA检查更新 – JohnnyAW