【问题标题】:Eclipse RCP consoleEclipse RCP 控制台
【发布时间】:2014-05-26 18:18:03
【问题描述】:

我已将控制台集成到我的 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));   

} 

【问题讨论】:

  • 你的消息流是什么类型的?
  • 私人 MessageConsoleStream outMessageStream;私人 MessageConsoleStream errMessageStream;

标签: eclipse-rcp


【解决方案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

【讨论】:

  • 你能澄清你的答案吗?我没明白
猜你喜欢
  • 2012-05-18
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多