最近為一個項目的服務器的做一個界面的時候,為了能把原來在后臺打印出來的相關信息重定向到GUI界面的時候,費了一些心思。都是以前在實現的時候大多數信息的打印和測試時使用的都是System.out和System.err之類,圖個方便,沒有使用log功能。當然這是個不好的習慣。 剛開始的時候用Swing做了一個面板,采用JTextPane組件作為打印信息的容器。可能是太久沒有用Swing了,在測試的時候這個東西的水平滑動塊老是隨著信息的顯示自動地滑向最后的地方,而且打印信息看起來很凌亂。后來就換用SWT,把打印的信息容器換用Text組件,把樣式定義為SWT.MULT | SWT.V_SCROLL | SWT.WRAP ,讓它可以自動換行。 查一下JDK的API文檔,System類提供了可以重定向的方法setOut(PrintStream out)、setErr(PrintStream err)、setIn(InputStream in)。在此我們只需求使用setOut和setErr就夠了,這二個方法都要傳入一個PrintStream類型的參數,只要在調用打印信息的前面調用這二個方法重設輸出流和錯誤流就可以達到我們的目的。那么我們繼承PrintStream類,并把要顯示信息的組件作為參數傳入到這個自定義的打印流類中。
Powered by: BlogJava Copyright © 寒武紀