要求:
1) 能够检测用户输入的URL地址是否合法:如用户只是输入了www.baidu.com,能够将其转换成http://www.baidu.com;
2) 中英文域名转换:如果用户输入了中文“百度”,能够将其转换为http://www.baidu.com。(要求至少能处理3-5个中文域名的转换)
3) 能够处理所显示的URL资源中的超链接。
4) 如果单击超链接,请将文本框中的内容换成对应的超链接的地址信息。
主要代码:
InternetAndURL.java
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
public class InternetAndURL extends JFrame implements ActionListener,Runnable, HyperlinkListener {
JEditorPane editPane;//网络资源文本区
JScrollPane jScrollPane;
JTextField textFldOfURLAddress;//显示网络地址的文本框
JLabel lableOfAddress;
JButton okBtn;
URL url;
Thread threadURL;
public InternetAndURL() {
this.setTitle("简易浏览器");
Font font = new Font("宋体", Font.BOLD, 20);
lableOfAddress = new JLabel("请输入网址或中文域名:");
lableOfAddress.setFont(font);
textFldOfURLAddress = new JTextField();
textFldOfURLAddress.setPreferredSize(new Dimension (300,27));
okBtn = new JButton("确定");
okBtn.addActionListener(this);
textFldOfURLAddress.addActionListener(this);
JPanel jp1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
jp1.add(lableOfAddress);
jp1.add(textFldOfURLAddress);
jp1.add(okBtn);
this.add(jp1,BorderLayout.NORTH);
editPane = new JEditorPane();
editPane.setSize(20,20);
editPane.setEditable(false);
editPane.addHyperlinkListener(this);
jScrollPane = new JScrollPane(editPane);
this.add(jScrollPane);
this.setLocation(300,300);
this.setSize(800,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
threadURL = new Thread(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==okBtn || e.getSource()==textFldOfURLAddress) {
if (!threadURL.isAlive()) {
threadURL = new Thread(this);
threadURL.start();
}
}
}
@Override
public void run() {
try {
String[] Cyuming = {"www.csdn.net","www.baidu.com","www.zhihuishu.com","www.taobao.com","www.jd.com"};
String[] Eyuming = {"CSDN","百度","智慧树","淘宝","京东"};
String str = textFldOfURLAddress.getText().trim();
//中英文域名转换
for (int i = 0; i < 5; i++) {
if (Eyuming[i].equals(str)) {
str = Cyuming[i];
}
}
//加协议
if (!str.startsWith("http://")){
str = "http://" + str;
}
url = new URL(str);
editPane.setPage(url);
textFldOfURLAddress.setText(url.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType()==HyperlinkEvent.EventType.ACTIVATED) {
try {
URL url1 = e.getURL();
editPane.setPage(url1);
textFldOfURLAddress.setText(url1.toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
InternetAndURL nw = new InternetAndURL();
nw.setVisible(true);
}
}
主要流程图:
运行结果截图:
如用户只是输入了www.baidu.com,能够将其转换成http://www.baidu.com
能够处理所显示的URL资源中的超链接,如果单击超链接,请将文本框中的内容换成对应的超链接的地址信息
如果用户输入了中文“百度”,能够将其转换为http://www.baidu.com。