2012-05-27 3 views
0

자바에서 간단한 웹 브라우저를 만들고 싶습니다. 여기에 제 코드가 있습니다!자바 스크립트 검색

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

public class WebBrowser extends JFrame { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

public JPanel 
    address_panel, window_panel; 

public JLabel 
    address_label; 

public JTextField 
    address_tf; 

public JEditorPane 
    window_pane; 

public JScrollPane 
    window_scroll; 

public JButton 
    address_b; 

private Go go = new Go(); 

public WebBrowser() throws IOException { 

    // Define address bar 
    address_label = new JLabel(" address: ", SwingConstants.CENTER); 
    address_tf = new JTextField("http://www.yahoo.com"); 
    address_tf.addActionListener(go); 
    address_b = new JButton("Go"); 
    address_b.addActionListener(go); 

    window_pane = new JEditorPane("http://www.yahoo.com"); 
    window_pane.setContentType("text/html"); 
    window_pane.setEditable(false); 

    address_panel = new JPanel(new BorderLayout()); 
    window_panel = new JPanel(new BorderLayout()); 

    address_panel.add(address_label, BorderLayout.WEST); 
    address_panel.add(address_tf, BorderLayout.CENTER); 
    address_panel.add(address_b, BorderLayout.EAST); 

    window_scroll = new JScrollPane(window_pane); 
    window_panel.add(window_scroll); 

    Container pane = getContentPane(); 
    pane.setLayout(new BorderLayout()); 

    pane.add(address_panel, BorderLayout.NORTH); 
    pane.add(window_panel, BorderLayout.CENTER); 

    setTitle("web browser"); 
    setSize(800,600); 
    setVisible(true); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 

} 

public class Go implements ActionListener{ 

    public void actionPerformed(ActionEvent ae){ 

     try { 

      window_pane.setPage(address_tf.getText()); 

     } catch (MalformedURLException e) {  // new URL() failed 
      window_pane.setText("MalformedURLException: " + e); 
     } catch (IOException e) {    // openConnection() failed 
      window_pane.setText("IOException: " + e); 
     } 

    } 

} 

public static void main(String args[]) throws IOException { 
    WebBrowser wb = new WebBrowser(); 
} 

} 

간단한 html 페이지에서는 정상적으로 작동하지만 코드의 JavaScript 부분을로드 할 수 없습니다. 내 문제는 자바 스크립트를로드하는 코드에 무엇을 추가해야합니까? 고맙습니다!

+6

브라우저에 Javascript 엔진이 있어야합니다. 자신 만의 글을 쓸 수도 있고, 둘러보고 자바로 포팅 된 사람이 있는지 확인할 수도 있습니다. – Makoto

+2

* "간단한 웹 브라우저를 쓰고 싶습니다."* 나는 펫 농장을 위해 Dodos를 잡고 싶습니다. Dodos가없고 '단순한 웹 브라우저'가 없다는 것을 감안할 때 우리는 모두 업무를 처리해야합니다. ;) –

+0

더 설명 해주시겠습니까? –

답변

2

스윙의 기본 위젯은 기본적으로 HTML4 및 CSS에 대한 기본적인 지원 만 제공하며 JavaScript는 전혀 지원하지 않습니다 (기본값). 잠재적으로 내장 된 Rhino JavaScript 엔진을 사용하여 코드를 실행할 수는 있지만 수동으로 수행해야하므로 상당히 어려울 것입니다. HtmlUnit은 HTML 페이지를 구문 분석하고 JavaScript를 실행하는 데이 방법을 사용하지만 일반적으로 호환성이 낮고 렌더러가 완전히 없으므로 직접 작성해야합니다 (예 : 표시가없고 코드의 페이지 콘텐츠에만 액세스 할 수 있음) .

Gecko (Firefox) 또는 WebKit (Chrome/Safari) 렌더러를 임베드하는 Swing 기반 브라우저 위젯이있어 적절한 JavaScript 인터프리터를 사용할 수는 있지만 모두 버그가 있고 비싸다. , 또는 유지되지 않습니다. 이것들은 모두 JavaScript를 지원하지만 일반적으로 다양한 브라우저 엔진의 아주 오래된 버전을 사용하며 플랫폼 간 호환성이 부족한 것은 물론 현대 웹 사이트와의 호환성이 떨어집니다.

Eclipse의 SWT 프로젝트에는 능동적으로 유지 관리되는 것처럼 보이지만 SWT 라이브러리에 의존적이며 가능한 경우 스윙 응용 프로그램에서 사용하기가 다소 더 어려울 브라우저 위젯이 포함됩니다. SWT는 AWT/Swing (현재 사용하고있는)과 완전히 다른 UI 툴킷이며, 브라우저 위젯을 활용하려면 Swing 앱에 포함하거나 Swing 앱에만 사용하는 방법을 찾아야합니다. SWT 툴킷.

전반적으로 SWT의 브라우저는 Java에서 괜찮은 브라우저를 얻는 데 가장 좋은 방법 일 수 있지만 여전히 사용하기 까다로운 문제 일 수 있습니다. 행운을 빕니다!

+0

* "Swing의 기본 위젯은 HTML4에 대한 기본적인 지원 만 제공합니다."* HTML 3.2. –

+0

아쉽네. 알맞은 브라우저 위젯을 JavaFX에만 포함시키려는 노력은 수치 스럽습니다. 표준 libs에서 볼 수있는 것이 좋았을 것입니다 ... – timothyb89

관련 문제