2014-01-06 152 views
0

我已經集成了一個控制檯到我的rcp應用程序,但我想用紅色而不是藍色顯示一些重要的信息,但我不知道該怎麼做(如果條件允許,我可以添加一些嗎?)這是我的控制檯視圖類。請幫助我解決我的問題。Eclipse RCP控制檯

public DebugConsole() 
{ 
    super("stdio/stderr", null); 

    outMessageStream = newMessageStream(); 
    outMessageStream.setColor(Display.getCurrent().getSystemColor( 
      SWT.COLOR_BLUE)); 

    errMessageStream = newMessageStream(); 

    errMessageStream.setColor(Display.getCurrent().getSystemColor( 
      SWT.COLOR_RED)); 

    System.setOut(new PrintStream(outMessageStream)); 
    System.setErr(new PrintStream(errMessageStream)); 

} 
+0

是何種類型的messagestreams的? – Calon

+0

private MessageConsoleStream outMessageStream; \t private MessageConsoleStream errMessageStream; – user2987728

回答

1

建議如下。

從你的代碼,如果newMessageStream()方法返回有效MessageConsoleStream那麼所有System.out.print消息將顯示在藍色和System.err.print消息將顯示爲紅色

  1. 使用ConsolePatternListener在 不同的顏色上顯示匹配的郵件安慰。

  2. 在使用System.out.printSystem.err.print語句之前更改流顏色。 在您的最後兩行代碼中,將PrintSteam實例作爲類公用字段(或私有getter和setter)並獲取這些流並設置顏色。請記住在使用System.out.printSystem.err.print聲明後重置顏色。

public class DebugConsole { 

    private PrintStream outStream; 
    private PrintStream errStream; 

    public DebugConsole() { 
     super("stdio/stderr", null); 

     outMessageStream = newMessageStream(); 
     outMessageStream.setColor(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE)); 

     errMessageStream = newMessageStream(); 

     errMessageStream.setColor(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); 
     outStream = new PrintStream(outMessageStream); 
     errStream = new PrintStream(errMessageStream); 

     System.setOut(outStream); 
     System.setErr(errStream); 
    } 

    public PrintStream getOutStream() { 
     return outStream; 
    } 
    public void setOutStream(PrintStream outStream) { 
     this.outStream = outStream; 
    } 
    public PrintStream getErrStream() { 
     return errStream; 
    } 
    public void setErrStream(PrintStream errStream) { 
     this.errStream = errStream; 
    }  
} 

測試類:

public class TestConsole { 
    public static void main(String[] args) { 
     DebugConsole console = new DebugConsole(); 
     MessageConsoleStream errStream = (MessageConsoleStream)console.getErrStream(); 
     Color oldColor = errStream.getColor(); 
     errStream.setColor(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN)); 
     //All the below message will be displayed in green color 
     System.err.println("This is in green color"); 
     System.err.println("This is in green color"); 
     //Reset color back 
     errStream.setColor(oldColor); 

     //Do the same for output stream   

    } 
} 

或者使用grep控制檯插件See here

+0

你能否澄清你的答案,我沒有得到它 – user2987728

+0

請告訴我按照我的程序做的方式 – user2987728

+0

添加了代碼。 –