之前数据结构作业里遇到获取 System.out.print() 内容的需求

找了好多只有这个可以用

# 完整通用代码

import java.io.ByteArrayOutputStream
import java.io.PrintStream
public class SystemOut{
    public static void outTest{
        ByteArrayOutputStream baoStream = new ByteArrayOutputStream(1024);
        PrintStream cacheStream = new PrintStream(baoStream);// 临时输出
        PrintStream oldStream = System.out;// 缓存系统输出
        System.setOut(cacheStream);
        System.out.print("...");// 不会打印到控制台
        String result = baoStream.toString();// 存放控制台输出的字符串
        System.setOut(oldStream);// 还原到系统输出
        System.out.println("result")
    }
    public static void main(String[] args){
        outTest();
    }
}

# 我自己的作业需求

要求是写一个图形界面

以下是图形界面的按钮 1 的事件监听

// 按钮 1 事件监听,输出 DLR 算法遍历的序列
jb1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        ByteArrayOutputStream baoStream = new ByteArrayOutputStream(1024);
        PrintStream cacheStream = new PrintStream(baoStream);// 临时输出
        PrintStream oldStream = System.out;// 缓存系统输出
        System.setOut(cacheStream);// 不打印到控制台
        bt.preRootTraverseL(T);// 这一行是本要打印到控制台的内容
        String result = baoStream.toString();
        tf.setText("DLR 算法遍历的序列:" + result);
    }
});

其他只需要修改 bt.preRootTraverseL(T); 这一行打印到控制台的内容即可