我有一个问题,我真的可以使用一些帮助 我有一个包含多个场景的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));
}