📄 webclientui.java
字号:
{
try
{
taContent.setPage(url);
}catch(IOException ioe)
{
error("发送IO错误:"+url);
labStatus.setText("浏览页面" + urlSite.getText() + "失败");
}
}
catch (Exception e)
{
e.printStackTrace();
labStatus.setText("浏览页面" + urlSite.getText() + "失败");
}
curPositon=(curPositon+1)%10;
urlList[curPositon]=url;//在循环队列中保存URL地址
labStatus.setText("浏览页面" + urlSite.getText());
}
}
/**
* 访问网页
*
*/
public void access()
{
access(this.urlSite.getText().trim());
}
/**
* 访问网页
* 通过构造一个线程AccessInternet显示页面
* @param url
*/
public void access(String url)
{
try
{
if (url.trim().equals(""))
{
error("您没有输入URL地址");
return;
}
if(url.length()<4||url.substring(0,3).equalsIgnoreCase("www"))
url="http://"+url;//如果没有加上协议
new AccessInternet(url).start();//开启线程访问页面
}
catch (Exception e)
{
e.printStackTrace();
this.labStatus.setText("浏览页面" + this.urlSite.getText() + "失败");
}
}
/**
* 错误页面
* 显示出错信息errorInfo
* @param errorInfo
*/
public void error(String errorInfo)
{
String htmlError="<html><title></title><body>无法浏览页面,错误原因如下:<li><font color=red>"+errorInfo+"</font></li></body></html>";
this.taContent.setText(htmlError);
}
public void actionPerformed(ActionEvent e)
{
//在响应当前事件之前,保存当前的显示页面
if(flag==1&&curPositon>=0)
contentList[curPositon]=taContent.getText();
if (e.getSource().equals(this.bAccess))
{
this.access();
flag=1;
} else if (e.getSource().equals(this.mOpen))
{
this.openFile();
flag=2;
} else if (e.getSource().equals(this.mSave))
{
this.saveFile();
flag=2;
} else if (e.getSource().equals(this.mSaveAs))
{
this.saveFileAs();
flag=2;
} else if (e.getSource().equals(this.mExit))
{
this.exit();
flag=2;
} else if (e.getSource().equals(this.mBack))
{
this.back();
flag=2;
} else if (e.getSource().equals(this.mPrevious))
{
this.privous();
flag=2;
} else if (e.getSource().equals(this.mFind))
{
this.find();
flag=2;
} else if (e.getSource().equals(this.mAddFavorites))
{
this.addFavorites();
flag=2;
} else if (e.getSource().equals(this.mRefresh))
{
this.refresh();
flag=1;
}
else//浏览收藏夹页面
{
this.labStatus.setText("收藏夹:"+e.getActionCommand());
gotoFavorites(e.getActionCommand());
flag=1;
}
}
/**
* 打开文件
*
*/
public void openFile()
{
FileDialog fd = new FileDialog(this, "打开文件", FileDialog.LOAD);
fd.setVisible(true);
if ((fd.getDirectory() != null) && (fd.getFile() != null))
{
this.taContent.setText("");
try
{
File file1 = new File(fd.getDirectory(), fd.getFile());
this.urlSite.setText(file1.toString());
FileReader fr = new FileReader(file1);
BufferedReader br = new BufferedReader(fr);
String content = "";
String aline;
while ((aline = br.readLine()) != null)
content += (aline + '\n');
taContent.setText(content);
br.close();
fr.close();
br = null;
fr = null;
fd = null;
} catch (Exception ee)
{
System.err.println(ee);
}
}
this.labStatus.setText("打开文件" + urlSite.getText() + "");
}
/**
* 保存文件至本地磁盘
*
*/
public void saveFile()
{
FileDialog fd = new FileDialog(this, "保存internet网页", FileDialog.SAVE);
fd.setVisible(true);
if ((fd.getDirectory() != null) & (fd.getFile() != null))
{
File file1 = new File(fd.getDirectory(), fd.getFile());
try
{
FileWriter fw = new FileWriter(file1);
fw.write(this.taContent.getText());
fw.close();
this.labStatus.setText("保存文件成功");
} catch (IOException ioe)
{
System.err.println(ioe);
this.labStatus.setText("保存文件失败");
}
}
}
/**
* 另存文件
*
*/
public void saveFileAs()
{
this.saveFile();
}
/**
* 退出系统
*
*/
public void exit()
{
System.exit(0);
}
/**
* 页面后退
*
*/
public void back()
{
this.labStatus.setText("后退");
if(backPositon>=accseTime)
{
this.labStatus.setText("无法后退");
return ;//后退次数不能超过访问页面的次数
}
if((this.curPositon<=0)&&(this.backPositon==0))
{
this.labStatus.setText("无法后退");
return ;//没有访问页面时,无法后退
}
this.backPositon=(this.backPositon+1)%10;
this.curPositon--;//页面后退
//当访问页面超过缓存大小10个,将两个缓存区看做循环队列
if(this.curPositon==-1) this.curPositon=9;
this.urlSite.setText(urlList[curPositon]);
this.taContent.setText(contentList[curPositon]);
}
/**
* 页面前进
*
*/
public void privous()
{
if(this.backPositon>=1)
{
this.backPositon--;
this.curPositon=(this.curPositon+1)%10;//页面前进
this.urlSite.setText(urlList[curPositon]);
this.taContent.setText(contentList[curPositon]);
this.labStatus.setText("前进");
}
else
this.labStatus.setText("无法前进");
}
/**
* 页面刷新
*
*/
public void refresh()
{
this.access();
this.labStatus.setText("刷新页面");
}
/**
* 添加到收藏夹
*
*/
public void addFavorites()
{
AddFavoritesUI add = new AddFavoritesUI();
add.setURL(this.urlSite.getText().trim());
add.validate();
add = null;
initMenuItem();
}
public void find()
{
if(this.searchUI==null)
{
searchUI=new SearchInfoUI();
searchUI.setBrowser(this);
}
searchUI.setVisible(true);
}
/**
* 通过收藏夹上的名称,寻找对应的URL地址,并访问该URL地址
*
* 收藏夹项上面的名字不能重复,否则会出现混乱
* @param name
*/
private void gotoFavorites(String name)
{
for(Enumeration eee=favorites.keys();eee.hasMoreElements();)
{
String saveName=(String)eee.nextElement();
if(saveName.equals(name))
{
String url=(String)favorites.get(saveName);
access(url);
break;
}
}
}
/**
* 通过读取文件favorites.dat
*
* 获取保存的收藏夹地址,并显示出来
* 并将 名称与地址 的对应关系保存到哈希表中
*/
public void addFavoritesItem()
{
try
{
File nowdir=new File(".").getAbsoluteFile();
String dirString=nowdir.toString();
String subs=dirString.substring(0,dirString.length()-1);
File fileInfo=new File(subs+"info/");
if(!fileInfo.exists()) fileInfo.mkdir();
File serverInfo=new File(fileInfo,"favorites.dat");
FileReader fr=new FileReader(serverInfo);
BufferedReader br=new BufferedReader(fr);
this.mFavorites.removeAll();
this.mFavorites.add(this.mAddFavorites);
favorites.clear();
while(true)
{
String name=br.readLine();
if(name==null||name.trim().equals("")) break;
String url=br.readLine();
if(url==null||url.trim().equals("")) break;
JMenuItem item=new JMenuItem(name);
item.addActionListener(this);
this.mFavorites.add(item);
favorites.put(name,url);
}
br.close();
fr.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public void keyPressed(KeyEvent e)
{
if ((byte) e.getKeyChar() == KeyEvent.VK_ENTER)
{
access();
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -