保持PrintStream重定向跨多个场景

时间:2015-02-25 19:59:00

标签: javafx printstream

我有一个问题,我真的可以使用一些帮助 我有一个包含多个场景的JavaFX应用程序。 在应用程序中,一个场景扮演“主”角色,其他场景根据动作加载 我遇到的问题是我需要将所有PrintStream活动重定向到“主”场景中的特定TextArea, 并且通过“all”我的意思是每个场景上的每个PrintStream活动都应该重定向到这个特定的TextArea

我在“主人”上使用的代码是:

Node node =primaryStage.getScene().lookup("#ShowInfo");
        TextArea ta =(TextArea)node;
        FXConsole console = FXConsole.getInstance(ta);
        PrintStream ps = new PrintStream(console, true);
        System.setOut(ps);
        System.setErr(ps);
        System.out.println("Test");

我在其他场景中使用Singleton模式。我使用的代码是:

FXConsole console = FXConsole.getInstance(null);
    PrintStream ps = new PrintStream(console, true);
    System.setOut(ps);
    System.setErr(ps);
    System.out.print("Hello There");
    ps.close();

问题在于我不喜欢这种实现,所以...是否有更好的解决方案 附: FXConsole是OutputStream的子类

    public class FXConsole extends OutputStream{
    private static TextArea    output;
    private static  FXConsole instance = null;

    public static FXConsole getInstance(TextArea ta) {
        if (instance == null) {
            instance = new FXConsole(ta);
        }
                    return instance ;
    }

    private FXConsole(TextArea ta)
    {
       this.output = ta;

    }
    @Override
    public  void write(int i) 
    {
        output.appendText(String.valueOf((char) i));
    }

0 个答案:

没有答案