2011-08-06 3 views
0

저는 java를 처음 사용합니다. JFrame에 브라우저를 내장하고 싶습니다. HTML을 표시하기 위해 JEditorPane을 사용했지만 여전히 페이지를 올바르게 표시하지 않습니다. 그것은 페이지를 보여 주지만 사물은 제자리에 없습니다. 가장 큰 문제는 웹 페이지에 포함 된 Java 애플릿이 사용자 정의 브라우저에 표시되지 않는다는 것입니다. 아마 JEditorPane을 올바르게 사용하지 않을 것입니다. 여기 내 코드는 다음과 같습니다.JFrame에 내장 된 브라우저에 애플릿이 포함되어 있습니다.

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

public class Frame1 extends JFrame implements ActionListener 
{ 
    private JEditorPane editorPane;  
    private JTextField addressField; 
    private JButton goButton; 
    private JLabel label; 

    public Frame1() {   
     super("Frame1"); 
     try { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch(Exception e) { 
      System.out.println("Unablet to set look and feel."); 
     } 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     label = new JLabel("Enter URL. Must include http://"); 

     // setup editor pane 
     editorPane = new JEditorPane(); 
     editorPane.setEditable(false); 
     URL url = null; 
     try { 
      url = new URL("http://www.cut-the-knot.org/SimpleGames/FrogsAndToads2d.shtml"); 
     } catch (MalformedURLException e) { 

     } 

     if (url != null) { 
      try { 
       editorPane.setPage(url); 
      } catch (IOException e) { 
       label.setText("Attempted to read a bad URL: " + url); 
      } 
     } else { 
      label.setText("String specifies an unknown protocol."); 
     } 

     // put editor pane in a scroll pane 
     JScrollPane editorScrollPane = new JScrollPane(editorPane); 
     editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
     editorScrollPane.setPreferredSize(new Dimension(250, 145)); 
     editorScrollPane.setMinimumSize(new Dimension(10, 10)); 

     // setup everything in southPanel. 
     // southPanel > addressBar + label> addressField + goButton 
     addressField = new JTextField(30); 
     goButton = new JButton("Go");  
     goButton.addActionListener(this); 
     JPanel addressBar = new JPanel();   
     JPanel southPanel = new JPanel(new GridLayout(2, 1)); 
     addressBar.add(addressField); 
     addressBar.add(goButton); 
     southPanel.add(addressBar); 
     southPanel.add(label); 

     // add everything to JFrame 
     setLayout(new BorderLayout());   
     add(southPanel, BorderLayout.SOUTH); 
     add(editorScrollPane, BorderLayout.CENTER); 

     setSize(500, 500); 
     setVisible(true); 
    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == goButton) { 
      URL url = null; 
      try { 
       url = new URL(addressField.getText()); 
      } catch (MalformedURLException murle) { 

      } 
      if (url != null) { 
       try { 
        editorPane.setPage(url); 
       } catch (IOException ioe) { 
        label.setText("Attempted to read a bad URL: " + url); 
       } 
      } else { 
       label.setText("String specifies an unknown protocol."); 
      } 
     } 
    } 

    public static void main(String[] args) { 
     new Frame1(); 
    } 
} 
+1

'JEditorPane'는 브라우저가 아닙니다. 그것은 텍스트 구성 요소입니다. 이 [답변] (http://stackoverflow.com/questions/6784577/vertically-centering-text-in-html-table-cell-in-java-jlabel/6785121#6785121)도 참조하십시오. – trashgod

+1

예, Swing의 HTML 지원은 애플릿 또는 유사한 포함을위한 것이 아니라 서식 지정에만 사용됩니다. 'appletviewer'의 일부를 포함 할 수는 있지만, HTML 출력은없고 애플릿 만 출력 할 수 있습니다. –

+0

제쳐두고, catch 블록에서 아무 것도 시도하지 않고 try/catch하는 것은 매우 나쁜 형태입니다. 예외를 스켈치 법으로 처리하지 마십시오. –

답변

3

스윙 자바 임베디드 브라우저를 고려해야합니다. 이것의 예는 다음과 같습니다

  1. lobo java browser
  2. DJ Project Native Swing
  3. 하면 사람들은 모두 무료 오픈 소스 자바 임베디드 브라우저입니다 SWT Browser

도 condsider 수 있습니다.

희망이 도움이됩니다.

관련 문제