import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
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();//地址栏
JEditorPane2 jEditorPane1=new JEditorPane2();//网页框
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("收藏夹(S)");
JMenuItem exitItem=new JMenuItem("退出(E)");
JMenu editMenu=new JMenu("编辑(E)");//建立菜单组
JMenuItem backItem=new JMenuItem("后退(Z)");
JMenuItem forwardItem=new JMenuItem("前进(P)");
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();//创建一个从左到右显示其组件
Box adressSource=Box.createHorizontalBox();
private ArrayList history=new ArrayList();//历史访问清单,用于记录访问过的页面
private int historyIndex;//历史访问索引器
public WebBrowser(){
setTitle("网页浏览器");
setResizable(true);//设置此frame是否由用户调整大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jEditorPane1.addHyperlinkListener(this);//网页框事件监听
//设置快捷键
//文件菜单
fileMenu.setMnemonic('F');
saveAsItem.setMnemonic('S');
saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
exitItem.setMnemonic('E');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_DOWN_MASK));
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.addSeparator();
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));
viewMenu.add(fullscreenItem);
viewMenu.addSeparator();
viewMenu.add(sourceItem);
viewMenu.addSeparator();
viewMenu.add(reloadItem);
Container contentPane=getContentPane();
scrollPane.setPreferredSize(new Dimension(100,500));
contentPane.add(scrollPane,BorderLayout.SOUTH);
//工具 栏
toolBar.add(picSave);
toolBar.addSeparator();//用于分隔工具按键
toolBar.add(picBack);
toolBar.addSeparator();
toolBar.add(picForward);
toolBar.addSeparator();
toolBar.add(picView);
toolBar.addSeparator();
toolBar.add(picExit);
toolBar.addSeparator();
toolBar.add(picExit);
toolBar.addSeparator();
toolBar.add(adressSource);
//设置窗体工具栏分布格式
contentPane.add(bar,BorderLayout.CENTER);
contentPane.add(toolBar,BorderLayout.NORTH);
//菜单栏中添加菜单
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);
}
public void actionPerformed(ActionEvent e)
{
String url="";
if(e.getSource()==button){//当按down时.....
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();
}
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=history.size()-1;//返回此列表中的元素数
jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
}
catch(Exception ex){
JOptionPane.showMessageDialog(WebBrowser.this, "不能打开网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
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=history.size()-1;//返回此列表中的元素数
jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
}
catch(Exception ex){
JOptionPane.showMessageDialog(WebBrowser.this, "不能打开网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
else if(url.length()==0){
JOptionPane.showMessageDialog(WebBrowser.this, "不能打开网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//................ 收藏夹
else if(e.getS