如何将我的输出从控制台重定向到Jtextarea? [英] How Do I Redirect My Output From Console To Jtextarea Here?

查看:82
本文介绍了如何将我的输出从控制台重定向到Jtextarea?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请编辑并发布满足mu需求的代码。 紧急情况。



Kindly edit and post your code which satisfy mu need. its an emergency.

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import javax.mail.*;
 
public class TextAreaDemoB extends JFrame 
{
JTextArea _resultArea = new JTextArea(6, 35);
      public TextAreaDemoB() throws Exception
        {
      String host = "pop.gmail.com";
      String user = "computingcloud14@gmail.com";
      String password = "QWERTYASDFG";
      Properties properties = System.getProperties();
        Session session = Session.getDefaultInstance(properties, null);
        Store store = session.getStore("pop3s");
        store.connect(host, user, password);
        Folder folder = store.getFolder("inbox");
 
        folder.open(Folder.READ_ONLY);
        Message[] message = folder.getMessages();
 
        
 
        
      for (int i = 0; i < message.length; i++)
      {
         String myString = Integer.toString(i);
          _resultArea.append(myString);
          _resultArea.append("------------ Message " + (i + 1) + " ------------");
          _resultArea.append("SentDate : " + message[i].getSentDate());
          _resultArea.append("From : " + message[i].getFrom()[0]);
         _resultArea.append("Subject : " + message[i].getSubject());
           InputStream stream = message[i].getInputStream();
       //The following loop must be changed to achieve my solution.can any1???????
           do
           {
               //_resultArea.setText(();
            char d=(char) stream.read();
            String c=Character.toString(d);
            //_resultArea.append(c);
              System.out.println(c);
           
            }
           while (stream.available() != 0);
      
 
           
      }
        JScrollPane scrollingArea = new JScrollPane(_resultArea);
        JPanel content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(scrollingArea, BorderLayout.CENTER);
        this.setContentPane(content);
        this.setTitle("TReadMails");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
    }
    
    //============================================================= main
    public static void main(String[] args) throws Exception
    {
        JFrame win = new TextAreaDemoB();
        win.setVisible(true);
    }
}

推荐答案

更新



我的不好,我还没有意识到我已经给你答案了。

你应该阅读答案并考虑按照我们告诉你的方式。

我们是专业人士,我们不玩游戏。





在java中检索邮件到jtextarea需要很长时间 [ ^ ]


//
//适用于您的应用程序的简单Java控制台(Swing版本)

//需要Java 1.1.5或更高版本

//

//免责声明使用此来源的风险由您自行承担。

//

//使用和分发到您自己的应用程序中的权利

//

// RJHM van den Bergh,rvdb @ comweb.nl



import java.io. *;

import java.awt。*;

import java.awt.event。*;

import java.util.Properties;

import javax.mail。*;





公共类AWTConsole扩展WindowAdapter实现WindowListener,ActionListener,Runnable

{

私有框架框架;

私有TextArea textArea;

私人线程阅读器;

私人线程阅读器2;

private boolean quit;



私人最终PipedInputStream pin = new PipedInputStream();

private final PipedInputStream pin2 = new PipedInputStream();



线程错误趋势; //仅用于测试(在此控制台上引发异常



public AWTConsole()抛出MessagingException,IOException

{

//创建所有组件并添加它们

frame = new Frame(Received Mails);

Dimension screenSize = Toolkit.getDefaultToolkit()。getScreenSize() ;

Dimension frameSize = new Dimension((int)(screenSize.width / 2),(int)(screenSize.height / 2));

int x =( int)(frameSize.width / 2);

int y =(int)(frameSize.height / 2);

frame.setBounds(x,y,frameSize。 width,frameSize.height);



textArea = new TextArea();

textArea.setEditable(false);

按钮按钮=新按钮(清除);



面板面板=新面板();

panel.setLayout( new BorderLayout());

panel.add(textArea,BorderLayout.CENTER);

panel.add(button,BorderLayout.SOUTH);

frame.add(面板);



frame.setVisible(真);



frame.addWindowListener(this);

button.addActionListener(this);



试试

{

PipedOutputStream pout = new PipedOutputStream(this.pin);

System.setOut(new PrintStream(pout,true));

}

catch(java.io.IOException io)

{

textArea.append(Couldn t将STDOUT重定向到此控制台\ n+ io.getMessage());

}

catch(SecurityException se)

{

textArea.append(无法将STDOUT重定向到此控制台\ n+ se.getMessage());

}



尝试

{

PipedOutputStream pout2 =新的PipedOutputStream(this.pin2);

System.setErr(new PrintStream (pout2,true));

}

catch(java.io.IOException io)

{

textArea.append(无法将STDERR重定向到此控制台\ n+ io.getMessage());

}

catch(SecurityException se)

{

textArea.append(无法将STDERR重定向到此控制台\ n+ se.getMessage());

}



quit = false; //通知线程他们应该退出



//从PipedInputStreams开始两个单独的线程

//

reader = new Thread(this);

reader.setDaemon(true);

reader.start();

//

reader2 = new Thread(this);

reader2.setDaemon(true);

reader2.start();



//测试部分

//你可以省略这部分你的申请

//

System.out.println(这里就是你的收件箱);

//System.out.println( Graphic2D可用的所有字体:\ n);

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

String host =pop.gmail.com;

String user =computingcloud14@gmail.com;

String password =QWERTYASDFG;

Properties properties = System.getProperties();

会话session = Session.getDefaultInstance(properties,null);

Store store = session.getStore(pop3s);

store。连接(主机,用户,密码);

文件夹文件夹= store.getFolder(收件箱);

folder.open(Folder.READ_ONLY);

消息[] message = folder.getMessages();

for(int i = 0;我< message.length; i ++)

{

System.out.print(------------ Message+(i + 1)+ - ----------+\ n \ n \ n \\ n;)

System.out.print(SentDate:+ message [i ] .getSentDate()+\ n\ n);

System.out.print(From:+ message [i] .getFrom()[0] +\ n \ n;

System.out.print(主题:+消息[i] .getSubject()+\ n \ n);

InputStream stream = message [i] .getInputStream();



do

{



char d =(char)stream.read();

String c = Character.toString(d);

System.out.print (c);



}

while(stream.available()!= 0);

< br $>
}

String [] fontNames = ge.getAvailableFontFamilyNames();

for(int n = 0; n //测试部分:简单在这个JVM中的任何地方抛出的错误都将打印在控制台上

//我们用一个单独的线程来做这个因为我们不想打破一个线程使用的控制台。

//System.out.println(\ n在这个控制台上抛出错误);

errorThrower = new Thread(this);

errorThrower.setDaemon(true);

errorThrower.start();

}



public synchronized void windowClosed(WindowEvent evt)

{

quit = true;

this.notifyAll(); //停止所有主题

try {reader.join(1000); pin.close(); } catch(例外e){}

try {reader2.join(1000); pin2.close(); } catch(例外e){}

System.exit(0);

}



公共同步void windowClosing(WindowEvent evt)

{

frame.setVisible(false); // JFrame的默认行为

frame.dispose();

}



public synchronized void actionPerformed( ActionEvent evt)

{

textArea.setText();

}



public synchronized void run()

{

try

{

while(Thread.currentThread( )==读者)

{

try {this.wait(100);} catch(InterruptedException ie){}

if(pin .available()!= 0)

{

String input = this.readLine(pin);

textArea.append(input);

}

if(quit)return;

}



while( Thread.currentThread()== reader2)

{

try {this.wait(100);} catch(InterruptedException ie){}

if(pin2.available()!= 0)

{

String input = this.readLine(pin2);

textArea.append (输入);

}

if(quit)return;

}

} catch(例外e)

{

textArea.append(\ nConsole报告内部错误。);

textArea.append(错误是:+ e);

}



//仅用于测试(1秒后抛出Nullpointer)

if(Thread。 currentThread()== errorThrower)

{

try {this.wait(1000); } catch(InterruptedException ie){}

抛出新的NullPointerException(应用程序测试:抛出NullPointerException它应该到达控制台);

}



}



public synchronized String readLine(PipedInputStream in)抛出IOException

{

String input =;

do

{

int available = in.available();

if(available == 0)break;

byte b [] = new byte [available];

in.read(b);

input = input + new String(b,0,b.length);

} while(!input.endsWith(\ n)&&!input.endsWith(\\\\ n)&&!quit);

返回输入;

}



public static void main(String [] arg)抛出IOException,MessagingException

{

新的AWTConsole(); //创建没有参考的控制台

}

}
// // A simple Java Console for your application (Swing version)
// Requires Java 1.1.5 or higher
//
// Disclaimer the use of this source is at your own risk.
//
// Permision to use and distribute into your own applications
//
// RJHM van den Bergh , rvdb@comweb.nl

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Properties;
import javax.mail.*;


public class AWTConsole extends WindowAdapter implements WindowListener, ActionListener, Runnable
{
private Frame frame;
private TextArea textArea;
private Thread reader;
private Thread reader2;
private boolean quit;

private final PipedInputStream pin=new PipedInputStream();
private final PipedInputStream pin2=new PipedInputStream();

Thread errorThrower; // just for testing (Throws an Exception at this Console

public AWTConsole() throws MessagingException, IOException
{
// create all components and add them
frame=new Frame("Received Mails");
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=new Dimension((int)(screenSize.width/2),(int)(screenSize.height/2));
int x=(int)(frameSize.width/2);
int y=(int)(frameSize.height/2);
frame.setBounds(x,y,frameSize.width,frameSize.height);

textArea=new TextArea();
textArea.setEditable(false);
Button button=new Button("clear");

Panel panel=new Panel();
panel.setLayout(new BorderLayout());
panel.add(textArea,BorderLayout.CENTER);
panel.add(button,BorderLayout.SOUTH);
frame.add(panel);

frame.setVisible(true);

frame.addWindowListener(this);
button.addActionListener(this);

try
{
PipedOutputStream pout=new PipedOutputStream(this.pin);
System.setOut(new PrintStream(pout,true));
}
catch (java.io.IOException io)
{
textArea.append("Couldn't redirect STDOUT to this console\n"+io.getMessage());
}
catch (SecurityException se)
{
textArea.append("Couldn't redirect STDOUT to this console\n"+se.getMessage());
}

try
{
PipedOutputStream pout2=new PipedOutputStream(this.pin2);
System.setErr(new PrintStream(pout2,true));
}
catch (java.io.IOException io)
{
textArea.append("Couldn't redirect STDERR to this console\n"+io.getMessage());
}
catch (SecurityException se)
{
textArea.append("Couldn't redirect STDERR to this console\n"+se.getMessage());
}

quit=false; // signals the Threads that they should exit

// Starting two seperate threads to read from the PipedInputStreams
//
reader=new Thread(this);
reader.setDaemon(true);
reader.start();
//
reader2=new Thread(this);
reader2.setDaemon(true);
reader2.start();

// testing part
// you may omit this part for your application
//
System.out.println("HERE GOES YOUR INBOX");
//System.out.println("All fonts available to Graphic2D:\n");
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String host = "pop.gmail.com";
String user = "computingcloud14@gmail.com";
String password = "QWERTYASDFG";
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties, null);
Store store = session.getStore("pop3s");
store.connect(host, user, password);
Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_ONLY);
Message[] message = folder.getMessages();
for (int i = 0; i < message.length; i++)
{
System.out.print("------------ Message " + (i + 1) + " ------------"+"\n\n\n\n");
System.out.print("SentDate : " + message[i].getSentDate()+"\n\n");
System.out.print("From : " + message[i].getFrom()[0]+"\n\n");
System.out.print("Subject : " + message[i].getSubject()+"\n\n");
InputStream stream = message[i].getInputStream();

do
{

char d=(char) stream.read();
String c=Character.toString(d);
System.out.print(c);

}
while (stream.available() != 0);

}
String[] fontNames=ge.getAvailableFontFamilyNames();
for(int n=0;n // Testing part: simple an error thrown anywhere in this JVM will be printed on the Console
// We do it with a seperate Thread becasue we don't wan't to break a Thread used by the Console.
//System.out.println("\nLets throw an error on this console");
errorThrower=new Thread(this);
errorThrower.setDaemon(true);
errorThrower.start();
}

public synchronized void windowClosed(WindowEvent evt)
{
quit=true;
this.notifyAll(); // stop all threads
try { reader.join(1000);pin.close(); } catch (Exception e){}
try { reader2.join(1000);pin2.close(); } catch (Exception e){}
System.exit(0);
}

public synchronized void windowClosing(WindowEvent evt)
{
frame.setVisible(false); // default behaviour of JFrame
frame.dispose();
}

public synchronized void actionPerformed(ActionEvent evt)
{
textArea.setText("");
}

public synchronized void run()
{
try
{
while (Thread.currentThread()==reader)
{
try { this.wait(100);}catch(InterruptedException ie) {}
if (pin.available()!=0)
{
String input=this.readLine(pin);
textArea.append(input);
}
if (quit) return;
}

while (Thread.currentThread()==reader2)
{
try { this.wait(100);}catch(InterruptedException ie) {}
if (pin2.available()!=0)
{
String input=this.readLine(pin2);
textArea.append(input);
}
if (quit) return;
}
} catch (Exception e)
{
textArea.append("\nConsole reports an Internal error.");
textArea.append("The error is: "+e);
}

// just for testing (Throw a Nullpointer after 1 second)
if (Thread.currentThread()==errorThrower)
{
try { this.wait(1000); }catch(InterruptedException ie){}
throw new NullPointerException("Application test: throwing an NullPointerException It should arrive at the console");
}

}

public synchronized String readLine(PipedInputStream in) throws IOException
{
String input="";
do
{
int available=in.available();
if (available==0) break;
byte b[]=new byte[available];
in.read(b);
input=input+new String(b,0,b.length);
}while( !input.endsWith("\n") && !input.endsWith("\r\n") && !quit);
return input;
}

public static void main(String[] arg) throws IOException, MessagingException
{
new AWTConsole(); // create console with not reference
}
}


这篇关于如何将我的输出从控制台重定向到Jtextarea?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆