grefic 2015-07-21 16:37 采纳率: 100%
浏览 1573
已采纳

请教Java的Frame框架遇到的问题

怎样把控制台中输出的东西在Frame框架中的滚动窗口中输出。在线急等赐教

  • 写回答

2条回答 默认 最新

  • JonsonJiao 2015-07-22 02:13
    关注

    // 核心代码就是重定向输出流的位置,这里需要复写print方法

    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintStream;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    public class OutCapture extends JFrame {
    
        private static final long serialVersionUID = -7094759145284455963L;
    
        public OutCapture() {
            Container contentPane = this.getContentPane();
            contentPane.setLayout(new BorderLayout());
    
            final JTextArea textArea = new JTextArea();
            JScrollPane scrollPanel = new JScrollPane();
            scrollPanel.setViewportView(textArea);
            contentPane.add(scrollPanel, BorderLayout.CENTER);
    
            JButton btn = new JButton("输出");
            contentPane.add(btn, BorderLayout.SOUTH);
            btn.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    for (int i = 0; i < 100; i++) {
                        System.out.println(i);
                    }
                }
            });
    
            // 核心代码就是重定向输出流的位置,这里需要复写print方法
            System.setOut(new PrintStream(new OutputStream() {
                @Override
                public void write(int b) throws IOException {
    
                }
            }, true) {
                @Override
                public void print(String txt) {
                    textArea.append(txt);
                    textArea.setCaretPosition(textArea.getText().length());
                }
    
                @Override
                public void println(String txt) {
                    print(txt + "\n");
                }
    
                @Override
                public void print(boolean b) {
                    print(b ? "true" : "false");
                }
    
                public void println(boolean b) {
                    print(String.valueOf(b) + "\n");
                }
    
                @Override
                public void print(char c) {
                    print(String.valueOf(c));
                }
    
                public void println(char c) {
                    print(String.valueOf(c) + "\n");
                }
    
                @Override
                public void print(int i) {
                    print(String.valueOf(i));
                }
    
                public void println(int i) {
                    print(String.valueOf(i) + "\n");
                }
    
                @Override
                public void print(long l) {
                    print(String.valueOf(l));
                }
    
                public void println(long l) {
                    print(String.valueOf(l) + "\n");
                }
    
                @Override
                public void print(double d) {
                    print(String.valueOf(d));
                }
    
                public void println(double d) {
                    print(String.valueOf(d) + "\n");
                }
    
                @Override
                public void print(float f) {
                    print(String.valueOf(f));
                }
    
                public void println(float f) {
                    print(String.valueOf(f) + "\n");
                }
    
                @Override
                public void print(char s[]) {
                    print(String.valueOf(s));
                }
    
                public void println(char s[]) {
                    print(String.valueOf(s) + "\n");
                }
    
                @Override
                public void print(Object obj) {
                    print(String.valueOf(obj));
                }
    
                public void println(Object obj) {
                    print(String.valueOf(obj) + "\n");
                }
    
            });
        }
    
        public static void main(String[] args) {
            OutCapture oc = new OutCapture();
            oc.setLocationRelativeTo(null);
            oc.setSize(400, 400);
            oc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            oc.setVisible(true);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题