JFrame将控制台信息打印到JFrame面板上

来源:互联网 发布:跟聪明的女朋友知乎 编辑:程序博客网 时间:2024/05/16 10:21

来一个小栗子

importjava.awt.BorderLayout;import java.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import java.io.File;import java.util.List; importjavax.swing.BorderFactory;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea; public class Simpleframeextends JFrame{JPaneljPanel1, jPanel3; // 三块面板,两块是按钮,一块是输出台JScrollPanejPanel2;JButtonjButton1, jButton2; // 两个按钮,一个扫描目录,一个确认执行JTextAreajTextArea; //输出台 publicSimpleframe() {initComp();} publicvoid initComp() {jPanel1= new JPanel(); // 两个按钮jButton1= new JButton("扫描目录");jButton2= new JButton("执行"); // 输出台jTextArea= new JTextArea(); // 设置布局this.setLayout(newBorderLayout()); jButton1.setPreferredSize(newDimension(119, 34));jButton2.setPreferredSize(newDimension(119, 34));//面板添加组件jPanel1.add(jButton1);jPanel1.add(jButton2);jPanel1.setSize(700,100);jPanel2= new JScrollPane(jTextArea);jPanel2.setBackground(Color.LIGHT_GRAY);jPanel2.setBounds(41,34, 313, 194);jPanel2.setBorder(BorderFactory.createTitledBorder("控制台"));jPanel2.setSize(300,100);  this.add(jPanel1,BorderLayout.NORTH);this.add(jPanel2,BorderLayout.CENTER); //设置显示框大小this.setSize(700,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true); jButton1.addActionListener(newActionListener() { publicvoid actionPerformed(ActionEvent e) {}}); jButton2.addActionListener(newActionListener() { publicvoid actionPerformed(ActionEvent e) {}});} publicstatic void main(String[] args) {newSimpleframe();} }


 

按钮事件自行添加

然后来到了主题,如何将控制台的信息打印到jframe的面板里,

其实非常简单,不必非要用什么重定向啊,换个思路嘛

在调用方法里传入JTextArea,直接append一下就可以了

jTextArea.append("文件格式不正确!!!\n");

但是这里会存在一个问题,就是信息很多的时候,会卡住,而且没有滚动条,滚动条在控制台里是添加了的,就是这个JScrollPanejPanel2

所以刚才那句话的下面紧接着再加一句

jTextArea.paintImmediately(jTextArea.getBounds());

就行了。


我发现我上传不了图。。。。。。。。。。。


 

0 0
原创粉丝点击