Re: build a browser in java
isha schrieb:
does ne1 hav any clue as to how to go about building a browser using
java..im lost
Here's one:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*;
public class Browser {
private JTextField addressField;
private JEditorPane editorPane;
private void initComponents() {
addressField = new JTextField(50);
editorPane = new JEditorPane();
editorPane.setEditable( false );
addressField.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
setPage( addressField.getText().trim() );
}
});
editorPane.addHyperlinkListener( new HyperlinkListener() {
public void hyperlinkUpdate( HyperlinkEvent e ) {
if ( e.getEventType() ==
HyperlinkEvent.EventType.ACTIVATED ) {
if ( e instanceof HTMLFrameHyperlinkEvent ) {
HTMLFrameHyperlinkEvent evt =
(HTMLFrameHyperlinkEvent)e;
HTMLDocument doc =
(HTMLDocument)editorPane.getDocument();
doc.processHTMLFrameHyperlinkEvent( evt );
} else {
setPage( e.getURL().toString() );
}
}
}
});
}
public void setPage( String page ) {
try {
editorPane.setPage( page );
addressField.setText( page );
} catch ( Exception ex ) {
JOptionPane.showMessageDialog( null, ex.getMessage() );
}
}
private JComponent createAddressPanel() {
JLabel addressLabel = new JLabel("Address" );
addressLabel.setDisplayedMnemonic( KeyEvent.VK_A );
addressLabel.setLabelFor( addressField );
Box addressPanel = new Box( BoxLayout.X_AXIS );
addressPanel.add( addressLabel );
addressPanel.add( Box.createHorizontalStrut(5) );
addressPanel.add( addressField );
return addressPanel;
}
private void createAndShowGUI() {
initComponents();
JPanel contentPanel = new JPanel( new BorderLayout() );
JComponent addressPanel = createAddressPanel();
addressPanel.setBorder( BorderFactory.createEmptyBorder(5,5,5,5) );
contentPanel.add( addressPanel, BorderLayout.NORTH );
contentPanel.add( new JScrollPane(editorPane) );
JFrame frame = new JFrame("Browser");
frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
frame.setContentPane( contentPanel );
frame.pack();
frame.setVisible(true);
}
public static final void main( String args[] ) {
EventQueue.invokeLater( new Runnable() {
public void run() {
new Browser().createAndShowGUI();
}
});
}
}
Bye
Michael