www.pudn.com > networktools.rar > HtmlBrowser.java
package html;
import java.io.IOException;
import java.net.URL;
import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class HtmlBrowser extends JFrame {
JPanel contentPane; // 包含整个框架的容器
BorderLayout borderLayoutAll = new BorderLayout();
JLabel jLabelPrompt = new JLabel(); // 状态提示框
JPanel jPanelMain = new JPanel(); // 包含URL编辑框和JEditorPane的容器
BorderLayout borderLayoutMain = new BorderLayout();
JTextField textFieldURL = new JTextField(); // URL输入框
JEditorPane jEditorPane = new JEditorPane(); // 显示网页内容的容器
// 构造函数
public HtmlBrowser() {
try {
jbInit(); // 初始化并显示界面
}
catch(Exception e) {
e.printStackTrace();
}
}
// 初始化并显示界面
private void jbInit() throws Exception {
contentPane = (JPanel)getContentPane();
contentPane.setLayout(borderLayoutAll);
jPanelMain.setLayout(borderLayoutMain);
jLabelPrompt.setText("简单的 HTML 浏览器,请在text框内输入完整的 URL");
textFieldURL.setText("");
textFieldURL.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
textFieldURL_actionPerformed(e);
}
});
jEditorPane.setEditable(false);
jEditorPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
jEditorPane_hyperlinkUpdate(e);
}
});
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().add(jEditorPane);
jPanelMain.add(textFieldURL, "North");
jPanelMain.add(scrollPane, "Center");
contentPane.add(jLabelPrompt, "North");
contentPane.add(jPanelMain, "Center");
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
this.setSize(new Dimension(600, 500));
this.setTitle("网页浏览器");
this.setVisible(true);
}
// 地址栏输入完毕后的回车消息响应
void textFieldURL_actionPerformed(ActionEvent e) {
try {
jEditorPane.setPage(textFieldURL.getText()); // 显示所给的URL内容
}
catch(IOException ex) {
JOptionPane msg = new JOptionPane(); // 提示对话框
JOptionPane.showMessageDialog(this, "不正确的URL地址:"+textFieldURL.getText(), "不正确的输入!", 0);
}
}
// 响应页面内打开超级链接的消息
void jEditorPane_hyperlinkUpdate(HyperlinkEvent e) {
if(e.getEventType() == javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) {
try {
URL url = e.getURL(); // 从消息中得到URL地址
jEditorPane.setPage(url); // 显示该URL页面的内容
textFieldURL.setText(url.toString()); // 显示URL地址
}
catch(IOException io){
JOptionPane msg = new JOptionPane();
JOptionPane.showMessageDialog(this, "不能打开该链接!", "不正确的输入!", 0);
}
}
}
// 关闭窗口
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
// 主函数
public static void main(String[] args) {
new HtmlBrowser();
}
}