2014-12-02 4 views
1

Я пытаюсь создать простой Java-браузер, используя eclipse Luna 4.4.1 Мне удаётся создать браузер, но у меня есть 2 проблемы.Простые проблемы с отображением браузера

  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

* «Мне удается создать браузер, но у меня есть 2 вопроса». * У вас также есть 1 вопрос? Также обратите внимание, что SO - это Q & A Site, а не справочная служба. Различные вопросы следует задавать в разных потоках. –

ответ

0

Последний раз я проверил, JEditorPane был далеко позади текущей версии HTML. Кроме того, вы, вероятно, должны каким-то образом подключить Javascript Engine (когда я пробовал это десять лет назад, это было правдой). Вы можете посмотреть Apache Rhino для Java Javascript Engine. Есть также такие вещи, как каскадные таблицы стилей/флеш-плагинов, которые, опять же, я думаю, вам придется загрузиться.

Удачи вам!

Смежные вопросы