class Search extends JFrame
{
JTextArea area;
Search()
{
 
 setSize(600, 300);
        Connection con=Lian.getCon();
String sql="select * from emp";
try 
{
Statement sta=con.createStatement();
ResultSet rs=sta.executeQuery(sql);
while(rs.next())
{
area=new JTextArea(20,100);
    String name= rs.getString("name");
 String sex=rs.getString("sex");
 int age=rs.getInt("age");
 int sal=rs.getInt("sal");
 area.setText("\n"+name+":"+sex+""+age+":"+sal);
 add(area);
 setVisible(true);
 //System.out.println(name+":"+sex+""+age+":"+sal);
}
 
}
catch (SQLException e) 
{
// TODO Auto-generated catch block
e.printStackTrace();
}

解决方案 »

  1.   

    你是想把什么东西转到textarea显示?按你的代码,这个有什么问题吗?最多就是area.setText("\n"+name+":"+sex+""+age+":"+sal);
    应该换成area.append("\n"+name+":"+sex+""+age+":"+sal);如果想要拦截其他输出流,可以这样:
    定义一个转向用的类:public class ConsoleIntercepter extends Thread{ private JTextArea text;
    private PipedInputStream is;

    public ConsoleIntercepter(JTextArea text,PipedOutputStream os) {
    this.text = text;
    try {
    this.is = new PipedInputStream(os);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    @Override
    public void run() {
    byte[] buf = new byte[1024];
    int size;
    while(true) {
    try {
    if((size = is.read(buf)) != -1)
    text.append(new String(buf,0,size));
    } catch (IOException e) {
    e.printStackTrace();
    break;
    }
    }
    }}
    然后在你的Frame中,使用这个类来拦截指定的输出流,这里假设需要拦截System.out// txt_console 是一个JTextFrame
    ConsoleIntercepter console = new ConsoleIntercepter(txt_console, System.os);
    console.start();
    在console这个线程启动以后,所有System.out.输出的内容会被txt_console捕获