2011-08-06 2 views
0

Я новичок в java. Я хочу встроить браузер в JFrame. Я использовал JEditorPane для отображения HTML, но он все еще не отображает страницу правильно. Он показывает страницу, но все неуместно. Моя самая большая проблема заключается в том, что апплеты 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

Да, поддержка HTML Swing поддерживается только для форматирования, а не для встраивания апплетов или аналогичных. Возможно, вы сможете внедрить часть 'appletviewer', но тогда у вас не будет HTML-выход, а только апплеты. –

+0

Как в стороне, это невероятно плохая форма, чтобы попробовать/поймать ничего в блоке catch. Не просто исключайте исключения. –

ответ

3

вы должны рассмотреть встроенный браузер swing java. Примерами этого являются:

  1. lobo java browser
  2. DJ Project Native Swing
  3. вы можете также condsider SWT Browser

те все бесплатно с открытым исходным кодом Java Embeded браузеров.

надеюсь, что это поможет.

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