import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
class Win extends JFrame
implements ActionListener,Runnable
{
JButton button;
URL url;
JTextField text;
JTextArea area;
byte b[]=new byte[118];
Thread thread;
public Win()
{
text=new JTextField(20);
area=new JTextArea(12,12);
button=new JButton("确定");
button.addActionListener(this);
thread=new Thread(this);
JPanel p=new JPanel();
p.add(new JLabel("输入网址"));
p.add(text);
p.add(button);
Container con=getContentPane();
con.add(new JScrollPane(area),BorderLayout.CENTER);
con.add(p,BorderLayout.NORTH);
setBounds(60,60,360,300);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionperformed(ActionEvent e)
{
if(!(thread.isAlive()))
thread=new Thread(this);
try
{
thread.start();
}
catch(Exception ee)
{
text.setText("我正在读取"+url);
}
}
public void run() throws IOException
{
try
{
int n=-1;
area.setText(null);
url=new URL(text.getText().trim());
InputStream in=url.openStream();
while((n=in.read(b))!=-1)
{
String s=new String(b,0,n);
area.append(s);
}
}
catch(MalformedURLException e1)
{
text.setText(""+e1);
return;
}
} public void actionPerformed(ActionEvent e) {
}
}
public class Main
{
public static void main(String[] args)
{
new Win();
}
}
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
class Win extends JFrame
implements ActionListener,Runnable
{
JButton button;
URL url;
JTextField text;
JTextArea area;
byte b[]=new byte[118];
Thread thread;
public Win()
{
text=new JTextField(20);
area=new JTextArea(12,12);
button=new JButton("确定");
button.addActionListener(this);
thread=new Thread(this);
JPanel p=new JPanel();
p.add(new JLabel("输入网址"));
p.add(text);
p.add(button);
Container con=getContentPane();
con.add(new JScrollPane(area),BorderLayout.CENTER);
con.add(p,BorderLayout.NORTH);
setBounds(60,60,360,300);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionperformed(ActionEvent e)
{
if(!(thread.isAlive()))
thread=new Thread(this);
try
{
thread.start();
}
catch(Exception ee)
{
text.setText("我正在读取"+url);
}
}
public void run() throws IOException
{
try
{
int n=-1;
area.setText(null);
url=new URL(text.getText().trim());
InputStream in=url.openStream();
while((n=in.read(b))!=-1)
{
String s=new String(b,0,n);
area.append(s);
}
}
catch(MalformedURLException e1)
{
text.setText(""+e1);
return;
}
} public void actionPerformed(ActionEvent e) {
}
}
public class Main
{
public static void main(String[] args)
{
new Win();
}
}
2.继承类只能抛出 narrower and fewer than interface的异常
修改后的代码如下,解释在注释里面已经写得很清楚了:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;class Win extends JFrame implements ActionListener, Runnable {
JButton button; URL url; JTextField text; JTextArea area; byte b[] = new byte[118]; Thread thread; public Win() {
text = new JTextField(20);
area = new JTextArea(12, 12);
button = new JButton("确定");
button.addActionListener(this);
thread = new Thread(this);
JPanel p = new JPanel();
p.add(new JLabel("输入网址"));
p.add(text);
p.add(button);
Container con = getContentPane();
con.add(new JScrollPane(area), BorderLayout.CENTER);
con.add(p, BorderLayout.NORTH);
setBounds(60, 60, 360, 300);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public void actionperformed(ActionEvent e) {
if (!(thread.isAlive()))
thread = new Thread(this);
try {
thread.start();
} catch (Exception ee) {
text.setText("我正在读取" + url);
}
} public void run() {// 楼主怎么既然写了try{}catch(){}有去throws呢.
//2者只要选择一种就可以了.catch()的时候,范围要从小到大,如果楼主想偷懒的
//话,就直接catch(Exception)就是了.
try {
int n = -1;
area.setText(null);
url = new URL(text.getText().trim());
InputStream in = url.openStream();
while ((n = in.read(b)) != -1) {
String s = new String(b, 0, n);
area.append(s);
}
} catch (MalformedURLException e1) {
text.setText("" + e1);
return;
} catch (IOException e) {// 修改了的地方.
e.printStackTrace();
}
} public void actionPerformed(ActionEvent e) {
}}public class Main {
public static void main(String[] args) {
new Win();
}
}