簡體   English   中英

Java System.out重定向問題

[英]Java System.out redirect issue

我編寫了一個遞歸目錄搜索,對於與特定模式匹配的每個目錄,將執行一個.bat。 現在,我想將打印到Java控制台的消息重定向到JTextArea(無需編寫standardErr)。 以下代碼用於GUI的重定向部分。

taConsole = new JTextArea();
taConsole.setEditable(false);
PrintStream printStream = new PrintStream(new CustomOutputStream(taConsole));
JScrollPane consolePane= new JScrollPane(taConsole);
System.setOut(printStream);

遞歸搜索和流程執行是可以的,但是當我嘗試使用GUI執行時,沒有任何文字寫入文本區域。 當我將某些System.out.println(“ foobar”)插入GUI類時,消息將按預期方式打印到文本區域中。 但是,我的邏輯類上的打印沒有插入到textarea中。

該程序在執行bat之前和之后打印一條消息,如下所示:

System.out.println("Generating PDFs for"+grandparent+"\\"+parent+"\\ ..."+f.getName());
Process p = Runtime.getRuntime().exec("cmd /c start /wait .\\Run.bat \""+f.getParent()+"\"");
p.waitFor();
System.out.println("PDFs generated!");

(不是這樣)有趣的是,當我從命令行中刪除“ start”語句時,消息將按我的意願打印在文本區域中,但是該過程未執行。 使用start語句,程序可以正常執行並生成我的pdf,但是根本沒有消息打印到文本區域。

我在這里想念什么?

提前致謝。

解決了:

實際的問題是,swing GUI的主線程被阻塞,等待遞歸搜索(和PDF生成)結束,因此未刷新框架。 通過在邏輯類上實現Runnable並通過GUI中的新線程調用它來解決。

嘗試

new PrintStream(new CustomOutputStream(taConsole), true);

或每次printlnflush

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM