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();
                }
            }
        }
    }
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值