Java编写一个简易的浏览器

  • Swing 的三个基本构造块:标签、按钮和文本字段
  • 但是需要个地方安放它们,并希望用户知道如何处理它们。
  • JFrame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。
  • JFrame 实际上不仅仅让程序员把组件放入其中并呈现给用户。比起它表面上的简单性,它实际上是 Swing 包中最复杂的组件。
  • 为了最大程度地简化组件,在独立于操作系统的 Swing 组件与实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。
  • JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class HTTPBrowserDemo extends JFrame {
     
    //标签组件,显示信息
    private JLabel jlAddress,jlInfo;
    //文本框
    private JTextField jtfAddress;
    //解释执行HTML文件
    private JEditorPane jtpShow;
    //面板容器类
    private JPanel panel;
    //按钮
    private JButton btnGO;

    public static void main(String[] args) {
     
        HTTPBrowserDemo hbd=new HTTPBrowserDemo();
    }
    HTTPBrowserDemo(){
     

        jlAddress=new JLabel("地址");
        jlInfo=new JLabel();
        jtpShow=new JEditorPane();
        panel=new JPanel();
        jtfAddress=new JTextField(20);
        btnGO=new JButton("转到");

        add(panel,BorderLayout.NORTH);
        add(jtpShow,BorderLayout.CENTER);
        add(jlInfo,BorderLayout.SOUTH);

        panel.add(jlAddress);
        panel.add(jtfAddress);
        panel.add(btnGO);

        setVisible(true);
        setSize(350, 280);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btnGO.addActionListener(new ShowHTMLListener());
        jtpShow.setEditable(false);
        jtpShow.addHyperlinkListener(new MyHyperlinkListener());
    }
    class ShowHTMLListener implements ActionListener{
     
        public void actionPerformed(ActionEvent e){
     
            String str=jtfAddress.getText();
            try {
     
                if (!str.startsWith("http://")){
     
                    str="http://"+str;
                }
                jlInfo.setText("连接中...");
                URL address=new URL(str);
                jtpShow.setPage(address);
                jlInfo.setText("完成");
            } catch (MalformedURLException e1) {
     
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e2) {
     
                // TODO: handle exception
            }
        }
    }
    class MyHyperlinkListener implements HyperlinkListener{
     
        public void hyperlinkUpdate(HyperlinkEvent e) {
     
            if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED){
     
                JEditorPane pane=(JEditorPane)e.getSource();
                try {
     
                    pane.setPage(e.getURL());
                } catch (IOException e1) {
     
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    }
}

你可能感兴趣的:(java)