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