在JPanel上内置浏览器

Jac*_*man 3 html java browser swing jtextpane

我正在尝试创建一个显示网页的JPanel.我已经到了可以阅读网页的阶段,但是当我显示页面时,它看起来很混乱,见下文.

在此输入图像描述

这是源代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;

public class Browser {
private JFrame frame;
private JPanel panelTop;
private JEditorPane editor;
private JScrollPane scroll;
private JTextField field;
private JButton button;
private URL url;

public Browser(String title) {
    initComponents();

    //set the title of the frame
    frame.setTitle(title);

    //set the default cloe op of the jframe
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //set size of frame
    frame.setSize(800,600);

    //add jpanel to north of jframe
    frame.add(BorderLayout.NORTH, panelTop);

    //add textfield and navigation button to jpanel.
    panelTop.add(field);
    panelTop.add(button);

    //add scroll pane to jframe center
    frame.add(BorderLayout.CENTER, scroll);


    //set the frame visible
    frame.setVisible(true);
}//end Browser() constructor

private void initComponents() {
    //create the JFrame
    frame = new JFrame();

    //create the JPanel used to hold the text field and button.
    panelTop = new JPanel();

    //set the url
    try {
        url = new URL("http://www.google.co.uk");
    }
    catch(MalformedURLException mue) {
        JOptionPane.showMessageDialog(null,mue);
    }

    //create the JEditorPane
    try {
        editor = new JEditorPane(url);

        //set the editor pane to false.
        editor.setEditable(false);
    }
    catch(IOException ioe) {
        JOptionPane.showMessageDialog(null,ioe);
    }

    //create the scroll pane and add the JEditorPane to it.
    scroll = new JScrollPane(editor, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    //create the JTextField
    field = new JTextField();

    //set the JTextField text to the url.
    //we're not doing this on the event dispatch thread, so we need to use
    //SwingUtilities.
    SwingUtilities.invokeLater(new Runnable() {
       public void run() {
           field.setText(url.toString());
       }
    });

    //create the button for chanign pages.
    button = new JButton("Go");

    //add action listener to the button
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                editor.setPage(field.getText());
            }
            catch(IOException ioe) {
                JOptionPane.showMessageDialog(null, ioe);
            }
        }
    });
}//end initComponents()

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new Browser("Simple web browser");
        }
    });
}//end main method.
}//end Browser class
Run Code Online (Sandbox Code Playgroud)

是否有一些我缺少的方法,读取CSS和闪存等?

And*_*son 6

仅仅因为JEditorPane呈现旧的(3.2的部分)HTML和简单的CSS并不能使它成为浏览器.它仅适用于您控制的内容.

是否有一些我缺少读取CSS的方法..

它支持简单的样式.

..闪光等?

默认HTML编辑器工具包中不支持.

可以在编辑器工具包中添加对新HTML元素的支持,但是您需要提供呈现Flash,.. applet等的组件.