Reputation: 11
I'm new to java. I want to embed a browser in a JFrame. I used a JEditorPane to display the HTML, but it still doesn't display the page correctly. It shows the page, but things are out of place. My biggest concern is that Java applets that are embedded in web pages are not showing up in my custom browser. I'm probably not using JEditorPane correctly. Here is my code:
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();
}
}
Upvotes: 0
Views: 1091
Reputation: 4556
you should consider a swing java embedded browser. Examples of this are:
those are all free open source java embeded browsers.
hope this helps.
Upvotes: 3