2014-12-02 71 views
1

我想用Eclipse創建一個簡單的Java瀏覽器Luna 4.4.1 我設法創建瀏覽器,但我有兩個問題。簡單的瀏覽器顯示問題

  1. 顯示頁面。當我的瀏覽器顯示頁面時,它顯示它們已損壞,例如 「google.com」,背景是藍色,亂七八糟的字母,我甚至表示滿意,在正常瀏覽器中不顯示
  2. Google搜索引擎即使Yahoo引擎正常工作也不起作用。

這是我的代碼

import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.IOException; 
import java.util.Stack; 

import javax.swing.JButton; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextField; 
import javax.swing.event.HyperlinkEvent; 
import javax.swing.event.HyperlinkListener; 

class EditorPaneFrame extends JFrame 
{ 

private JTextField url; 
private JButton backButton; 
private JEditorPane editorPane; 
private Stack urlStack = new Stack(); 

public EditorPaneFrame() 
{ 
setTitle("Java Web Browser"); 
setSize(1000,800); 
addWindowListener(new WindowAdapter() 
{ 
public void windowClosing(WindowEvent e) 
{ 
System.exit(0); 
} 
}); 
// set up text field and load button for typing in URL 
url = new JTextField(30); 

url.addActionListener(
      //action listener for when the user press enter 
      new ActionListener(){ 
       public void actionPerformed(ActionEvent event) 
        { 
         try 
         { 
          // remember URL for back button 
          urlStack.push(url.getText()); 
          editorPane.setPage("http://"+url.getText()); 
          } 
          catch(Exception e) 
          { 
          editorPane.setText("Error: " +e); 
          } 
          } 

       } 

      ); 

     // set up back button and button action 
    backButton = new JButton("Back"); 
    backButton.addActionListener(new ActionListener() 
    { 
    public void actionPerformed(ActionEvent event) 
    { 
    if(urlStack.size()<=1) return; 
    try 
    { 
    urlStack.pop(); 
    String urlString = (String)urlStack.peek(); 
    url.setText(urlString); 
    editorPane.setPage("http://"+urlString); 
    } 
    catch(IOException e) 
    { 
    editorPane.setText("Error : " +e); 
    } 
    } 
    }); 
    editorPane = new JEditorPane(); 
    editorPane.setEditable(false); 
    editorPane.addHyperlinkListener(new HyperlinkListener() 
    { 
     public void hyperlinkUpdate(HyperlinkEvent event) 
     { 
     if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) 
     { 
     try 
     { 
     urlStack.push(event.getURL().toString()); 
     url.setText(event.getURL().toString()); 
     editorPane.setPage(event.getURL()); 
     } 
     catch(IOException e) 
     { 
     editorPane.setText("Error: " + e); 
     } 
     } 
     } 
     }); 

     Container contentPane = getContentPane(); 
     contentPane.add(new JScrollPane(editorPane), "Center"); 
     JPanel panel = new JPanel(); 
     panel.add(new JLabel("URL http://")); 
     panel.add(url); 
     panel.add(backButton); 
     contentPane.add(panel,"North"); 
     } 
} 


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

public class WebBrowser { 
@SuppressWarnings("deprecation") 
public static void main(String [] args) 
{ 
JFrame frame = new EditorPaneFrame(); 
frame.show(); 
} 
} 

任何幫助將

+0

*「我設法創建瀏覽器,但我有兩個問題。」*您是否也有1個問題?另請注意,SO是Q&A站點,而不是服務檯。不同的問題應該在不同的線程中提出。 – 2014-12-02 23:31:04

回答

0

我最後一次檢查可以理解的,JEditorPane的是HTML的最新版本落後方式。另外,你可能需要以某種方式插入一個Javascript引擎(當我十年前嘗試這個時,這是真的)。您可以查看Apache Rhino以獲得Java Javascript引擎。還有像級聯樣式表/ Flash插件的東西,我認爲你必須引導。

祝你好運!