⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webbrowser.java

📁 基于Java的浏览器的设计与实现。该浏览器的设计与实现是用Java语言开发的。该设计可以满足用户的需求
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

/*
**网页浏览器主程序
**WebBrowser.java
*/
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import java.io.*;
import java.net.*;
import java.util.*;

public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener{

    //建立工具栏用来显示地址栏
    JToolBar bar=new JToolBar ();

    //建立网页显示界面
    JTextField jurl = new JTextField (60);
    JEditorPane jEditorPane1 = new JEditorPane ();
    JScrollPane scrollPane = new JScrollPane (jEditorPane1);

    JFileChooser chooser=new JFileChooser ();
    JFileChooser chooser1=new JFileChooser ();
    String htmlSource;
    JWindow window = new JWindow (WebBrowser.this);

    JButton button2=new JButton ("窗口还原");
    Toolkit toolkit = Toolkit.getDefaultToolkit();

    //建立菜单栏
    JMenuBar jMenuBar1 = new JMenuBar();
    //建立菜单组
    JMenu fileMenu = new JMenu ("文件(F)");
    //建立菜单项.
    JMenuItem newfileItem = new JMenuItem("新建(N)");
    JMenuItem saveAsItem = new JMenuItem ("另存为(A)...");
    JMenuItem exitItem=new JMenuItem ("退出(I)");

    JMenu editMenu=new JMenu ("编辑(E)");
    JMenuItem collectionItem=new JMenuItem("添加到收藏夹");
    JMenuItem backItem=new JMenuItem ("后退");
    JMenuItem forwardItem=new JMenuItem ("前进");

    JMenu viewMenu=new JMenu ("视图(V)");
    JMenuItem fullscreenItem=new JMenuItem ("全屏(U)");
    JMenuItem sourceItem=new JMenuItem ("查看源码(C)");
    JMenuItem reloadItem=new JMenuItem ("刷新(R)");
    JMenu collEction = new JMenu("收藏夹(A)");
    String[] collEctionItem = new String[10];
    public int i = 0;
    Icon iconObj;
    //建立工具栏
    JToolBar toolBar = new JToolBar();
    //建立工具栏中的按钮组件

    JButton picSave = new JButton("另存为",new ImageIcon(".\\save.gif"));
    JButton picCollection = new JButton("添加到收藏夹",new ImageIcon(".\\collection.gif"));
    JButton picBack = new JButton("后退",new ImageIcon(".\\back.jpg"));


    JButton picForward = new JButton("前进",new ImageIcon(".\\Forward.jpg"));

    JButton picView = new JButton("查看源代码",new ImageIcon(".\\look.gif"));
    JButton picExit = new JButton("退出",new ImageIcon(".\\exit.gif"));

    JLabel label=new JLabel ("地址: ");
    JButton button=new JButton ("转向",new ImageIcon(".\\GO.gif"));
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    //Box adress=Box.createHorizontalBox ();

    //ArrayList对象,用来存放历史地址
    private ArrayList history=new ArrayList();
    //整型变量,表示历史地址的访问顺序
    private int historyIndex;

    /**
    **构造函数
    **初始化图形用户界面
    */
    public WebBrowser(){

        setTitle ("网页浏览器");
        setResizable(true);
        //setDefaultCloseOperation(setVisible(false));
        setSize(1024,768);
        //为jEditorPane1添加事件侦听
        jEditorPane1.addHyperlinkListener (this);

        //为组件fileMenu设置热键‘F’
        fileMenu.setMnemonic('F');

        saveAsItem.setMnemonic ('S');
        //为“另存为”组件设置快捷键为ctrl+s
        saveAsItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK));

        exitItem.setMnemonic('Q');
        exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_E,InputEvent.CTRL_MASK));

        //将菜单项saveAsItem加入到菜单组fileMenu中
        fileMenu.add(newfileItem);
        fileMenu.add (saveAsItem);
        //在菜单项中添加隔离
        fileMenu.addSeparator ();
        fileMenu.add (exitItem);
        collectionItem.setMnemonic('A');
        collectionItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK));
        backItem.setMnemonic ('B');
        backItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_Z,InputEvent.CTRL_MASK));
        forwardItem.setMnemonic('D');
        forwardItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK));

        editMenu.setMnemonic('E');
        editMenu.add (collectionItem);
        editMenu.add (backItem);
        editMenu.add (forwardItem);

        viewMenu.setMnemonic('V');

        fullscreenItem.setMnemonic('U');
        fullscreenItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_U,InputEvent.CTRL_MASK));
        sourceItem.setMnemonic('C');
        sourceItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK));
        reloadItem.setMnemonic('R');
        reloadItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_R,InputEvent.CTRL_MASK));

        Container contentPane=getContentPane ();

        //设置大小
        scrollPane.setPreferredSize(new Dimension(100,500));
        contentPane.add (scrollPane, BorderLayout.CENTER);

        //在工具栏中添加按钮组件

        toolBar.add(picSave);
        toolBar.addSeparator();

        toolBar.add(picBack);
        toolBar.add(picForward);
        toolBar.addSeparator();
        toolBar.add(picCollection);
        toolBar.add(picView);
        toolBar.addSeparator();
        toolBar.add(picExit);


        //contentPane.add (bar,BorderLayout.CENTER);
        //contentPane.add(toolBar,BorderLayout.NORTH);

        viewMenu.add (fullscreenItem);
        viewMenu.add (sourceItem);
        viewMenu.addSeparator ();
        viewMenu.add (reloadItem);

        jMenuBar1.add (fileMenu);
        jMenuBar1.add (editMenu);
        jMenuBar1.add (viewMenu);
        jMenuBar1.add(collEction);

        setJMenuBar (jMenuBar1);

        //adress.add (label);
        //adress.add (jurl);
        //adress.add (button);
        panel2.add(toolBar);
        FlowLayout flout = new FlowLayout(FlowLayout.LEFT);
        panel1.setLayout(flout);
        panel1.add(label);
        panel1.add(jurl);
        panel1.add(button);
        panel2.add(panel1);
        GridLayout layout = new GridLayout(2,1,10,10);
        panel2.setLayout(layout);


        //bar.add (adress);
        //bar.add(panel);
        contentPane.add(panel2,BorderLayout.NORTH);
        //为组件添加事件监听

        saveAsItem.addActionListener(this);
        picSave.addActionListener(this);
        exitItem.addActionListener(this);
        picExit.addActionListener(this);
        backItem.addActionListener(this);
        picBack.addActionListener(this);
        forwardItem.addActionListener(this);
        picForward.addActionListener(this);
        fullscreenItem.addActionListener(this);
        sourceItem.addActionListener(this);
        picView.addActionListener(this);
        reloadItem.addActionListener(this);
        button.addActionListener(this);
        jurl.addActionListener(this);
        collectionItem.addActionListener(this);
        picCollection.addActionListener(this);
        newfileItem.addActionListener(this);
    }

    /**
    **实现监听器接口的actionPerformed函数
    */
    public void actionPerformed(ActionEvent e) {
        String url = "";
        //点击转向按钮
        if (e.getSource() == button){
            //获得地址栏的内容
            url=jurl.getText ();
            //url不为“”,并且以“http://”开头
            if(url.length ()>0&&url.startsWith ("http://")){
                try {
                    //JEditorPane组件显示url的内容链接
                    jEditorPane1.setPage (url);
                    //将url的内容添加到ArrayList对象history中
                    history.add(url);
                    //historyIndex的数值设为history对象的长度-1
                    historyIndex=history.size()-1;
                    //重新布局
		    jEditorPane1.setEditable(false); //add by copy editor :)
                    jEditorPane1.revalidate ();
                }
                catch(Exception ex) {
                    //如果链接显示失败,则弹出选择对话框“无法打开该搜索页”
                    JOptionPane.showMessageDialog (WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
                }
            }
            //url不为“”,并且不以“http://”开头
            else if(url.length ()>0&&!url.startsWith ("http://")) {
                //在url前面添加“http://”
                url="http://"+url;
                try {
                    jEditorPane1.setPage (url );
                    history.add(url);
                    historyIndex=history.size()-1;
		    jEditorPane1.setEditable(false); //add by copy editor :)
                    jEditorPane1.revalidate ();
                }
                catch(Exception ex) {
                    JOptionPane.showMessageDialog (WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
                }
            }
            //没有输入url,即url为空
            else if(url.length ()==0){
                JOptionPane.showMessageDialog (WebBrowser.this,"请输入链接地址","网页浏览器",JOptionPane.ERROR_MESSAGE);
            }

        }
        //输入地址后点击回车
        else if (e.getSource() == jurl){
            url=jurl.getText ();
            if(url.length ()>0&&url.startsWith ("http://")) {
                try {
                    jEditorPane1.setPage (url);
                    history.add(url);
                    historyIndex=history.size()-1;
		    jEditorPane1.setEditable(false); //add by copy editor :)
                    jEditorPane1.revalidate ();
                    jurl.setMaximumSize (jurl.getPreferredSize ());
                }
                catch(Exception ex) {
                    JOptionPane.showMessageDialog (WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
                }
            }
            else if(url.length ()>0&&!url.startsWith ("http://")) {
                url="http://"+url;
                try {
                    jEditorPane1.setPage (url );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -