Eclipse RCP控制台

时间:2014-01-06 07:08:30

标签: eclipse-rcp

我已经将一个控制台集成到我的rcp应用程序中,但我想用红色而不是蓝色显示一些重要的信息,但我不知道该怎么做(我可以添加一些if条件吗?)这个类对于我的控制台视图。请帮助我解决我的问题。

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));   

} 

1 个答案:

答案 0 :(得分: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声明后,请务必重新调整颜色。

  3. 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