Как создать простой браузер, качели

simple browser in Swing

Этот пример показывает, как создать простой браузер в Swing.

Код курса простого браузера представлены в таблице:


import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.util.*;

import javax.swing.*;

import javax.swing.event.*;

import javax.swing.text.html.*;



// The Simple Web Browser.

public class MiniBrowser extends JFrame

        

        implements HyperlinkListener {

    // These are the buttons for iterating through the page list.

    private JButton backButton, forwardButton;

    

    // Page location text field.

    private JTextField locationTextField;

    

    // Editor pane for displaying pages.

    private JEditorPane displayEditorPane;

    

    // Browser's list of pages that have been visited.

    private ArrayList pageList = new ArrayList();

    

    // Constructor for Mini Web Browser.

    public MiniBrowser() {

        // Set application title.

        super("Mini Browser");

        

        // Set window size.

        setSize(640480);

        

        // Handle closing events.

        addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {

                actionExit();

            }

        });

        

        // Set up file menu.

        JMenuBar menuBar = new JMenuBar();

        JMenu fileMenu = new JMenu("File");

        fileMenu.setMnemonic(KeyEvent.VK_F);

        JMenuItem fileExitMenuItem = new JMenuItem("Exit",

                KeyEvent.VK_X);

        fileExitMenuItem.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                actionExit();

            }

        });

        fileMenu.add(fileExitMenuItem);

        menuBar.add(fileMenu);

        setJMenuBar(menuBar);

        

        // Set up button panel.

        JPanel buttonPanel = new JPanel();

        backButton = new JButton("< Back");

        backButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                actionBack();

            }

        });

        backButton.setEnabled(false);

        buttonPanel.add(backButton);

        forwardButton = new JButton("Forward >");

        forwardButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                actionForward();

            }

        });

        forwardButton.setEnabled(false);

        buttonPanel.add(forwardButton);

        locationTextField = new JTextField(35);

        locationTextField.addKeyListener(new KeyAdapter() {

            public void keyReleased(KeyEvent e) {

                if (e.getKeyCode() == KeyEvent.VK_ENTER) {

                    actionGo();

                }

            }

        });

        buttonPanel.add(locationTextField);

        JButton goButton = new JButton("GO");

        goButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                actionGo();

            }

        });

        buttonPanel.add(goButton);

        

        // Set up page display.

        displayEditorPane = new JEditorPane();

        displayEditorPane.setContentType("text/html");

        displayEditorPane.setEditable(false);

        displayEditorPane.addHyperlinkListener(this);

        

        getContentPane().setLayout(new BorderLayout());

        getContentPane().add(buttonPanel, BorderLayout.NORTH);

        getContentPane().add(new JScrollPane(displayEditorPane),

                BorderLayout.CENTER);

    }

    

    // Exit this program.

    private void actionExit() {

        System.exit(0);

    }

    

    // Go back to the page viewed before the current page.

    private void actionBack() {

        URL currentUrl = displayEditorPane.getPage();

        int pageIndex = pageList.indexOf(currentUrl.toString());

        try {

            showPage(

                    new URL((StringpageList.get(pageIndex - 1))false);

        catch (Exception e) {}

    }

    

    // Go forward to the page viewed after the current page.

    private void actionForward() {

        URL currentUrl = displayEditorPane.getPage();

        int pageIndex = pageList.indexOf(currentUrl.toString());

        try {

            showPage(

                    new URL((StringpageList.get(pageIndex + 1))false);

        catch (Exception e) {}

    }

    

    // Load and show the page specified in the location text field.

    private void actionGo() {

        URL verifiedUrl = verifyUrl(locationTextField.getText());

        if (verifiedUrl != null) {

            showPage(verifiedUrl, true);

        else {

            showError("Invalid URL");

        }

    }

    

    // Show dialog box with error message.

    private void showError(String errorMessage) {

        JOptionPane.showMessageDialog(this, errorMessage,

                "Error", JOptionPane.ERROR_MESSAGE);

    }

    

    // Verify URL format.

    private URL verifyUrl(String url) {

        // Only allow HTTP URLs.

        if (!url.toLowerCase().startsWith("http://"))

            return null;

        

        // Verify format of URL.

        URL verifiedUrl = null;

        try {

            verifiedUrl = new URL(url);

        catch (Exception e) {

            return null;

        }

        

        return verifiedUrl;

    }

    

  /* Show the specified page and add it to

     the page list if specified. */

    private void showPage(URL pageUrl, boolean addToList) {

        // Show hour glass cursor while crawling is under way.

        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

        

        try {

            // Get URL of page currently being displayed.

            URL currentUrl = displayEditorPane.getPage();

            

            // Load and display specified page.

            displayEditorPane.setPage(pageUrl);

            

            // Get URL of new page being displayed.

            URL newUrl = displayEditorPane.getPage();

            

            // Add page to list if specified.

            if (addToList) {

                int listSize = pageList.size();

                if (listSize > 0) {

                    int pageIndex =

                            pageList.indexOf(currentUrl.toString());

                    if (pageIndex < listSize - 1) {

                        for (int i = listSize - 1; i > pageIndex; i--) {

                            pageList.remove(i);

                        }

                    }

                }

                pageList.add(newUrl.toString());

            }

            

            // Update location text field with URL of current page.

            locationTextField.setText(newUrl.toString());

            

            // Update buttons based on the page being displayed.

            updateButtons();

        catch (Exception e) {

            // Show error messsage.

            showError("Unable to load page");

        finally {

            // Return to default cursor.

            setCursor(Cursor.getDefaultCursor());

        }

    }

    

  /* Update back and forward buttons based on

     the page being displayed. */

    private void updateButtons() {

        if (pageList.size() 2) {

            backButton.setEnabled(false);

            forwardButton.setEnabled(false);

        else {

            URL currentUrl = displayEditorPane.getPage();

            int pageIndex = pageList.indexOf(currentUrl.toString());

            backButton.setEnabled(pageIndex > 0);

            forwardButton.setEnabled(

                    pageIndex < (pageList.size() 1));

        }

    }

    

    // Handle hyperlink's being clicked.

    public void hyperlinkUpdate(HyperlinkEvent event) {

        HyperlinkEvent.EventType eventType = event.getEventType();

        if (eventType == HyperlinkEvent.EventType.ACTIVATED) {

            if (event instanceof HTMLFrameHyperlinkEvent) {

                HTMLFrameHyperlinkEvent linkEvent =

                        (HTMLFrameHyperlinkEventevent;

                HTMLDocument document =

                        (HTMLDocumentdisplayEditorPane.getDocument();

                document.processHTMLFrameHyperlinkEvent(linkEvent);

            else {

                showPage(event.getURL()true);

            }

        }

    }

    

    // Run the Mini Browser.

    public static void main(String[] args) {

        MiniBrowser browser = new MiniBrowser();

        browser.show();

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>