联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2018-06-18 05:41

package bw;


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(10);

JEditorPane jEditorPane1 = new JEditorPane();

JScrollPane scrollPane = new JScrollPane(jEditorPane1);


JFileChooser chooser = new JFileChooser();

JFileChooser chooserl = new JFileChooser();

String htmlSource;

JWindow window = new JWindow(WebBrowser.this);


JButton button2 = new JButton("窗口还原");

Toolkit toolkit = Toolkit.getDefaultToolkit();

// 建立菜单栏

JMenuBar jMenuBarl = new JMenuBar();

// 建立菜单组

JMenu fileMenu = new JMenu("文件(E)");

// 建立菜单项

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);

setLayout(new GridBagLayout());

// 为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();

GridBagConstraints c=new GridBagConstraints();

c.insets=new Insets(10,0,0,10);

// 设置大小

scrollPane.setPreferredSize(new Dimension(80, 500));

c.gridx=2;

c.gridy=1;

c.gridwidth=1;

c.gridheight=3;

c.fill=GridBagConstraints.BOTH;

c.anchor=GridBagConstraints.CENTER;

contentPane.add(scrollPane, c);


// 在工具栏中添加按钮组件

toolBar.add(picSave);

toolBar.addSeparator();

toolBar.add(picBack);

toolBar.add(picForward);

toolBar.addSeparator();

toolBar.add(picView);

toolBar.addSeparator();

toolBar.add(picExit);

c.gridx=1;

c.gridy=1;

c.gridwidth=1;

c.gridheight=1;

c.fill=GridBagConstraints.NONE;

c.anchor=GridBagConstraints.CENTER;

contentPane.add(bar,c);


c.gridx=0;

c.gridy=1;

c.gridwidth=1;

c.fill=GridBagConstraints.NONE;

c.anchor=GridBagConstraints.CENTER;

c.gridheight=1;

contentPane.add(toolBar,c);

toolBar.setOpaque(false);


viewMenu.add(fullscreenItem);

viewMenu.add(sourceItem);

viewMenu.addSeparator();


viewMenu.add(reloadItem);


jMenuBarl.add(fileMenu);

jMenuBarl.add(editMenu);

jMenuBarl.add(viewMenu);


setJMenuBar(jMenuBarl);


adress.add(label);

adress.add(jurl);

adress.add(button);

bar.add(adress);


ImageIcon image=new ImageIcon("images/111.jpg");

JLabel ttt = new JLabel(image);

ttt.setBounds(0,0,900,500);

getLayeredPane().add(ttt,new Integer(Integer.MIN_VALUE));

JPanel jp=(JPanel)getContentPane(); jp.setOpaque(false);

JPanel panel=new JPanel();

panel.setOpaque(false);//也要让他透明  

panel.setLayout(null);//为了使用按钮的定位  

add(panel);

// 为组件添加事件监听

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;

//设置成非编辑状态jEdi torPanel .seteditable(false);

jEditorPane1.revalidate();

}

catch (Exception ex) {

JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);

}

}

//没有输入url,即urI为空

else if (url.length()==0){

JOptionPane.showMessageDialog (WebBrowser.this,"请输入链接地址","网页浏览器",JOptionPane.ERROR_MESSAGE);

}

}

// 输入地址后按Enter键

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;


//设置成非编州状态jEditorPanel.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()== picSave||e.getSource() == saveAsItem){

url = jurl.getText().toString().trim();

if(url.length()>0&&!url.startsWith("http://")) {

url="http://"+url;

}

if(!url.equals("")) {

//保存文件

saveFile(url);

}

else{

JOptionPane.showMessageDialog(WebBrowser.this, "请输人链接地址","网页测览器",JOptionPane.ERROR_MESSAGE);

}

}

//退出

else if(e.getSource() == exitItem ||e.getSource() == picExit){

System.exit(0);

}

//后退

else if(e.getSource() == backItem ||e.getSource() == picBack){

historyIndex--;

if(historyIndex < 0)

historyIndex = 0;

url = jurl.getText();

try{

//获得history对象中本地址之前访间的地址

url =(String) history.get(historyIndex);

jEditorPane1.setPage(url);

jurl.setText(url.toString());

//设置成非编辑状态EditorPanel.setEditablelfalse):

jEditorPane1.revalidate();

}

catch (Exception ex){

}

}

//前进

else if(e.getSource() == forwardItem ||e.getSource() ==

picForward){

historyIndex++;

if(historyIndex >= history.size())

       historyIndex=history.size()-1;

url = jurl.getText();

try{

    //获得history对象中本地址之后访向的地址

    url =(String)history.get(historyIndex);

    jEditorPane1.setPage(url);

    jurl.setText(url.toString());

    //设置成非编辑状态jEditorPane1 .seteditablel(false);

    jEditorPane1.revalidate();

     }

 catch (Exception ex) {

}

}

//全屏

else if(e.getSource() == fullscreenItem) {

  boolean add_button2=true;

  //获得屏幕大小

  Dimension size =Toolkit.getDefaultToolkit().getScreenSize();

  Container content = window.getContentPane() ;

  content.add (bar,"North");

  content.add(scrollPane,"Center");

  //button2为单击“全屏”后的还原按钮

  if (add_button2==true){

      bar.add(button2);

}

  //为button2添加事件

  button2.addActionListener(new ActionListener() {

     public void actionPerformed(ActionEvent evt) {

         WebBrowser.this.setEnabled(true) ;

         window.remove(bar) ;

         window.remove(toolBar) ;

         window.remove (scrollPane) ;

         window.setVisible(false) ;

scrollPane.setPreferredSize (new Dimension(100,500));

         getContentPane().add(scrollPane,BorderLayout.SOUTH);

         getContentPane().add(bar,BorderLayout.CENTER);

         getContentPane().add(toolBar,BorderLayout.NORTH);

         bar.remove(button2);

         pack();

}

});

 window.setSize(size);

 window.setVisible(true);

  }

// 查看源文件

else if(e.getSource()==sourceItem ||e.getSource()==picView){

url=jurl.getText().toString() .trim();

 if(url.length()>0&&!url.startsWith("http://")){

    url="http://"+url;

     }if(!url.equals(""))

{

// 根据ur1,获得源代码

getHtmlSource(url);

// 生成显示源代码的框架对象

ViewSourceFrame vsframe = new ViewSourceFrame(htmlSource);

vsframe.setBounds(0, 0, 800, 500);

vsframe.setVisible(true);

}else

{

      JOptionPane.showMessageDialog(WebBrowser.this,"请输人 链接地址","网页浏览器",JOptionPane.ERROR_MESSAGE);

}}

// 刷新

else if(e.getSource()==reloadItem){

url=jurl.getText();

if(url.length()>0&&url.startsWith("http://")){

try{

jEditorPane1.setPage(url);

// 设置成非编辑状态

jEditorPane1.setEditable(false);

jEditorPane1.revalidate();

}

catch(Exception ex){

}

}

else if (url.length()>0&&!url.startsWith("http:// ")) {

url="http://"+url;

try{

jEditorPane1.setPage(url);

// 设置成非编辑状态

jEditorPane1.setEditable(false);

jEditorPane1.revalidate();

}

catch(Exception ex){

}

}

}

}


/*

** 保存文件

*/

void saveFile(final String url) {

final String linesep = System.getProperty("line.separator");

chooserl.setCurrentDirectory(new File("."));

chooserl.setDialogType(JFileChooser.SAVE_DIALOG);

chooserl.setDialogTitle("另存为...");

if (chooserl.showSaveDialog(this) != JFileChooser.APPROVE_OPTION)

return;


this.repaint();

Thread thread = new Thread() {

public void run() {

try {

java.net.URL source = new URL(url);

InputStream in = new BufferedInputStream(source.openStream());

BufferedReader br = new BufferedReader(new InputStreamReader(in));

File fileName = chooserl.getSelectedFile();

FileWriter out = new FileWriter(fileName);

BufferedWriter bw = new BufferedWriter(out);

String line;

while ((line = br.readLine()) != null) {

bw.write(line);

bw.newLine();

}

bw.flush();

bw.close();

out.close();

String dMessage = url + "已经被保存至" + linesep + fileName.getAbsolutePath();

String dTitle = "另存为";

int dType = JOptionPane.INFORMATION_MESSAGE;

JOptionPane.showMessageDialog((Component) null, dMessage, dTitle, dType);

} catch (java.net.MalformedURLException muex) {

JOptionPane.showMessageDialog((Component) null, muex.toString(), "网页浏览器",

JOptionPane.ERROR_MESSAGE);

} catch (Exception ex) {

JOptionPane.showMessageDialog((Component) null, ex.toString(), "网页浏览器", JOptionPane.ERROR_MESSAGE);

}

}

};

thread.start();


}


/*

** 获得源代码

*/

void getHtmlSource(String url) {

String linesep, htmlLine;

linesep = System.getProperty("line.separator");

htmlSource = "";

try {

java.net.URL source = new URL(url);

InputStream in = new BufferedInputStream(source.openStream());

BufferedReader br = new BufferedReader(new InputStreamReader(in));

while ((htmlLine = br.readLine()) != null) {

htmlSource = htmlSource + htmlLine + linesep;

}

} catch (java.net.MalformedURLException muex) {

JOptionPane.showMessageDialog(WebBrowser.this, muex.toString(), "网页浏览器", JOptionPane.ERROR_MESSAGE);

} catch (Exception e) {

JOptionPane.showMessageDialog(WebBrowser.this, e.toString(), "网页浏览器", JOptionPane.ERROR_MESSAGE);

}

}


/**

**实现监听器接口的hyperlinkUpdate函数

*/

public void hyperlinkUpdate (HyperlinkEvent e){

try{

if (e.getEventType()==HyperlinkEvent.EventType.ACTIVATED)

jEditorPane1.setPage(e.getURL());

}

catch (Exception ex){

ex.printStackTrace (System.err);

}

}


/* 生成一个IE对象 */

public static void main(String [] args){

try{

UIManager.setLookAndFeel (UIManager .getCrossPlatformLookAndFeelClassName());

}

catch(Exception e){

}

WebBrowser webBrowser = new WebBrowser();

webBrowser.pack();

webBrowser.setVisible(true);

}}


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp