import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class AreaTest extends JFrame
{
public static AreaTest f = null;
public JTextArea ta = null;
public AreaTest()
{
ta = new JTextArea();
JScrollPane scrollPane = new JScrollPane(ta);
scrollPane.setPreferredSize(new Dimension(200,400));
JPanel bp = new JPanel();
JButton b = new JButton("开始");
b.setPreferredSize(new Dimension(60,25));
bp.add(b);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
PageReader pr = new PageReader(ta);
}
});
add(scrollPane,BorderLayout.CENTER);
add(bp,BorderLayout.SOUTH);
}
public static void main(String args[])
{
f = new AreaTest();
f.setTitle("AreaTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(200, 400);
f.setResizable(false);
f.setVisible(true);
}
}
import java.io.IOException;
import java.io.InputStream;import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;public class PageReader
{
public AreaTest f = null; private String charset = "utf-8";
private String urlString = "http://www.baidu.com/";
private StringBuffer HtmlContent = new StringBuffer();
public PageReader(AreaTest f)
{
this.f = f;
this.startRead();
}
private void startRead()
{
try
{
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
Scanner in = new Scanner(is, this.charset);
while(in.hasNextLine())
{
f.ta.append(in.nextLine()+"\r\n");
}
in.close();
is.close();
//System.out.println(HtmlContent);
}catch(IOException e)
{
e.printStackTrace();
}
}
}
这个是测试来着,搞了很久没搞好怎么把读取的网页内容一行行实时显示在textArea里
我看网上有说要把费时代码加到另一个线程,但是研究了很久没搞出来
哪位达人做过,教教小弟,谢谢了
该怎么实现
{
new Thread(new Runnable()
{
public void run()
{
PageReader pr = new PageReader(ta);
}
}).start();
}
{
public void actionPerformed(ActionEvent e)
{
PageReader pr = new PageReader(ta);//ta应该改为f
}
});
然后加上这个进程后效果还不是很明显,可以再加一句代码: while(in.hasNextLine())
{
f.ta.append(in.nextLine()+"\r\n");
Thread.currentThread().sleep(87);//让当前的进程(即点击按钮创建的进程)睡眠若干秒,当然要捕获InterruptedException异常
}仅供参考!
在PageReader.java中f.ta.append(in.nextLine()+"\r\n");一行后面加上下面一行代码就可以的
f.paintAll(f.getGraphics());小弟出道不到一年,请大家多关照哦!!!AreaTest.java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;
public class AreaTest extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public static AreaTest f = null;
public JTextArea ta = null;
public AreaTest()
{
ta = new JTextArea();
JScrollPane scrollPane = new JScrollPane(ta);
scrollPane.setPreferredSize(new Dimension(200,400));
JPanel bp = new JPanel();
JButton b = new JButton("开始");
b.setPreferredSize(new Dimension(60,25));
bp.add(b);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
PageReader pr = new PageReader(AreaTest.this);
}
});
add(scrollPane,BorderLayout.CENTER);
add(bp,BorderLayout.SOUTH);
}
public static void main(String args[])
{
f = new AreaTest();
f.setTitle("AreaTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(200, 400);
f.setResizable(false);
f.setVisible(true);
}
}
import java.io.IOException;
import java.io.InputStream;import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;public class PageReader
{
public AreaTest f = null; private String charset = "utf-8";
private String urlString = "http://www.baidu.com/";
private StringBuffer HtmlContent = new StringBuffer();
public PageReader(AreaTest f)
{
this.f = f;
this.startRead();
}
private void startRead()
{
try
{
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
Scanner in = new Scanner(is, this.charset);
while(in.hasNextLine())
{
f.ta.append(in.nextLine()+"\r\n");
//---------------2009-05-05 ADD START---------------------
f.paintAll(f.getGraphics());
//---------------2009-05-05 ADD END---------------------
}
in.close();
is.close();
//System.out.println(HtmlContent);
}catch(IOException e)
{
e.printStackTrace();
}
}
}