/**
* @(#)WebBrowser.java
*网页浏览器主程序
*
* @author 李永玖
* @version 1.00 2008/10/19
*/
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import java.io.*;
import java.net.*;
import java.util.*;
public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener{
//建立工具栏用来显示地址栏
JToolBar bar=new JToolBar();
//建立网页显示界面
JTextField jurl=new JTextField(60);
JEditorPane jEditorPane1=new JEditorPane();
JScrollPane scrollPane=new JScrollPane(jEditorPane1);
JFileChooser chooser=new JFileChooser();
JFileChooser chooser1=new JFileChooser();
String htmlSource;
JWindow window=new JWindow(WebBrowser.this);
JButton button2=new JButton("窗口还原");
Toolkit toolkit=Toolkit.getDefaultToolkit();
//建立菜单栏
JMenuBar jMenuBar1=new JMenuBar();
//建立菜单组
JMenu fileMenu=new JMenu("文件(F)");
//建立菜单项
JMenuItem saveAsItem=new JMenuItem("另存为(A)...");
JMenuItem exitItem=new JMenuItem("退出(I)");
JMenu editMenu=new JMenu("编辑(E)");
JMenuItem backItem=new JMenuItem("后退");
JMenuItem forwardItem=new JMenuItem("前进");
JMenu viewMenu=new JMenu("视图(V)");
JMenuItem fullscreenItem=new JMenuItem("全屏(U)");
JMenuItem sourceItem=new JMenuItem("查看源码(C)");
JMenuItem reloadItem=new JMenuItem("刷新(R)");
//建立工具栏
JToolBar toolBar=new JToolBar();
//建立工具栏中的按钮组件
JButton picSave=new JButton("另存为");
JButton picBack=new JButton("后退");
JButton picForward=new JButton("前进");
JButton picView=new JButton("查看源代码");
JButton picExit=new JButton("退出");
JLabel label=new JLabel("地址");
JButton button=new JButton("转向");
Box adress=Box.createHorizontalBox();
//Arraylist 对象,用来存放历史地址
private ArrayList history=new ArrayList();
//整型变量,表示历史地址的访问顺序
private int historyIndex;
/**
*构造函数
*初始化图形用户界面
*/
public WebBrowser() {
setTitle("网页浏览器");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//为jEditorPanel添加时间侦听
jEditorPane1.addHyperlinkListener(this);
//为组件fileMenu设置热键'F'
fileMenu.setMnemonic('F');
saveAsItem.setMnemonic('S');
//另存为组件设置快捷键为Ctrl+S
saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
exitItem.setMnemonic('Q');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
//将菜单项saveAsItem加入到菜单组fileMenu中
fileMenu.add(saveAsItem);
//在菜单项中添加隔离
fileMenu.addSeparator();
fileMenu.add(exitItem);
backItem.setMnemonic('B');
backItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
forwardItem.setMnemonic('D');
forwardItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
editMenu.setMnemonic('E');
editMenu.add(backItem);
editMenu.add(forwardItem);
viewMenu.setMnemonic('V');
fullscreenItem.setMnemonic('U');
fullscreenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
sourceItem.setMnemonic('C');
sourceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
reloadItem.setMnemonic('R');
reloadItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
Container contentPane=getContentPane();
//设置大小
scrollPane.setPreferredSize(new Dimension(100,500));
contentPane.add(scrollPane,BorderLayout.SOUTH);
//在工具栏中添加按钮组件
toolBar.add(picSave);
toolBar.addSeparator();
toolBar.add(picBack);
toolBar.add(picForward);
toolBar.addSeparator();
toolBar.add(picView);
toolBar.addSeparator();
toolBar.add(picExit);
contentPane.add(bar,BorderLayout.CENTER);
contentPane.add(toolBar,BorderLayout.NORTH);
viewMenu.add(fullscreenItem);
viewMenu.add(sourceItem);
viewMenu.addSeparator();
viewMenu.add(reloadItem);
jMenuBar1.add(fileMenu);
jMenuBar1.add(editMenu);
jMenuBar1.add(viewMenu);
setJMenuBar(jMenuBar1);
adress.add(label);
adress.add(jurl);
adress.add(button);
bar.add(adress);
//为组件添加时间监听
saveAsItem.addActionListener(this);
picSave.addActionListener(this);
exitItem.addActionListener(this);
picExit.addActionListener(this);
backItem.addActionListener(this);
picBack.addActionListener(this);
forwardItem.addActionListener(this);
picForward.addActionListener(this);
fullscreenItem.addActionListener(this);
sourceItem.addActionListener(this);
picView.addActionListener(this);
reloadItem.addActionListener(this);
button.addActionListener(this);
jurl.addActionListener(this);
}
/**
*实现监听器接口的actionperformed方法
*/
public void actionPerformed(ActionEvent e){
String url="";
//点击转向按钮
if(e.getSource()==button){
//获得地址栏的内容
url=jurl.getText();
//url部位"",并且以"http://"开头
if(url.length()>0&&url.startsWith("http://")){
try{
//JEditorPane组件显示url的内容连接
jEditorPane1.setPage(url);
//将url的内容添加到ArrayList对象history中
history.add(url);
//historyIndex的数值设为history对象的长度-1
historyIndex=history.size()-1;
//设置成非编辑状态jEditorpanel.setEditable(false);
//重新布局
jEditorPane1.revalidate();
}
catch(Exception ex){
//如果连接显示失败,则弹出选择对话框"无法打开搜索页"
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//url不为"",并且不以"http://"开头
else if(url.length()>0&&!url.startsWith("http://")){
//在url前面添加"http://"
url="http://"+url;
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
//设置成非编辑状态
jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
}
catch(Exception ex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//没有输入url,即url为空
else if(url.length()==0){
JOptionPane.showMessageDialog(WebBrowser.this,"请输入链接地址","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//输入地址后按回车键
else if(e.getSource()==jurl){
url=jurl.getText();
if(url.length()>0&&url.startsWith("http://"));
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
//设置成非编辑状态
jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
jurl.setMaximumSize(jurl.getPreferredSize());
}
catch(Exception ex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
else if(url.length()>0&&!url.startsWith("http://")){
url="http://"+url;
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=histor
快乐无限出发
- 粉丝: 1212
- 资源: 7395
最新资源
- 电子版账户历史明细.zip
- Visio 2019 64位版本安装包
- 汽车损坏识别检测数据集,使用yolov11格式标注,6696张图片,可识别11种损坏类型 标签和图片参考:https://backend.blog.csdn.net/article/details/1
- 不同形状物体检测25-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 数据分析-57-爬取KFC早餐,搭配出你的营养早餐(包含代码和数据)
- 程序员日常小工具,包含截图,接口调用,日期处理,json转换,翻译等
- 如何在Microsoft Visual Studio 2013 编写的程序的详细步骤
- IMG20241229160637.jpg
- java医药管理系统设计源代码.zip
- 汽车损坏识别检测数据集,使用yolov9格式标注,6696张图片,可识别11种损坏类型 标签和图片参考:https://backend.blog.csdn.net/article/details/1
- 汽车损坏识别检测数据集,使用yolov8格式标注,6696张图片,可识别11种损坏类型 标签和图片参考:https://backend.blog.csdn.net/article/details/1
- 远端桌面工具 2024最新版Setup.RemoteDesktopManager.2024.3.22.0
- 基于python的疫情数据爬虫+微博关键词爬虫(数据库)+数据预处理及可视化数据情感分析源码+文档说明
- 基于ssm的大学生心理健康系统设计与开发源码(java毕业设计完整源码+LW).zip
- idea 用了多年的settings
- RationalDMIS64全套教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈