Java简单的Web浏览器奇怪的输出

时间:2016-05-04 17:18:30

标签: java browser

要学习Java中的网络,我按照教程在NetBeans中创建了一个新的Web浏览器。以下是ReadFile类中的代码:

package WebBrowser;

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

/**
 *
 * @author Siddharth Venu
 * 
 */
public class ReadFile extends JFrame{
    private JTextField addressBar;
    private JEditorPane display;

    //constructor
    public ReadFile(){
        super("Sid Browser");

        addressBar=new JTextField("Enter address");
        //lambda expression instead of anonymous class
        addressBar.addActionListener((ActionEvent event) -> {
            loadData(event.getActionCommand());
        });
        add(addressBar,BorderLayout.NORTH);

        display = new JEditorPane();
        display.setEditable(false);
        display.addHyperlinkListener((HyperlinkEvent event) -> {
            if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED)
                loadData(event.getURL().toString());
        });
        add(new JScrollPane(display), BorderLayout.CENTER);
        setSize(500,300);
        setVisible(true);
    }

    //load the data to display on the screen
    private void loadData(String address){
        try{
            display.setPage(address);
            addressBar.setText(address);
        }catch(Exception e){
            System.out.println(e);
        }
    }
}

以下是Main类中的代码:

package WebBrowser;
import javax.swing.JFrame;
/**
 *
 * @author Siddharth Venu
 * 
 */
public class Main {
    public static void main(String[] args){
        ReadFile browser=new ReadFile();
        browser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

然后我开始运行Main类,因为它没有显示来自网站的任何数据,顶部的地址栏看起来很好。但是当我输入一个URL,比如http://google.com时,它会显示奇怪的输出,如下图所示。 Display output of my browser 为什么会发生这种情况?奇怪的蓝色背景和未对齐的Google徽标。

[编辑]我知道setPage方法只能处理HTML,纯文本或RTF而不能处理js。但它应该至少显示HTML部分没有奇怪的蓝屏na? PS:蓝屏也出现在Facebook等其他网站上。

1 个答案:

答案 0 :(得分:1)

我已经测试了您的浏览器。我在html5,javascript和css(例如google.comfacebook.com)的网页上获得了相同的结果。

但是当我使用像this这样的bones网站时,它显然有效。所以我必须假设问题是在这个简单的浏览器中缺乏对这些技术的支持。

至于video linked中的那个人,他使用了我无法在视频中找到或读出的裸html谷歌网页(或者不久前制作了视频)。 youtube评论部分的人也在解决您的问题。他们将其描述为缺乏对Swing中html5的支持。但是有些设法使它在JavaFX中正常工作。