国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

簡易網(wǎng)頁瀏覽器

2019-11-08 02:02:23
字體:
供稿:網(wǎng)友
package WebBrowser;/* * 網(wǎng)頁瀏覽主程序 * webBrowser.java */import java.awt.*;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.io.*;import java.net.URL;import java.util.ArrayList;import javax.swing.*;import javax.swing.event.HyperlinkEvent;import javax.swing.event.HyperlinkListener;public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener { //建立工具欄用來顯示地址 JToolBar bar=new JToolBar(); //建立網(wǎng)頁顯示頁面 JTextField jurl=new JTextField(60); JEditorPane jEditorPanel=new JEditorPane(); JScrollPane scrollpane=new JScrollPane(jEditorPanel); 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("查看PRivate ArrayList history=new ArrayList(); //整型變量 表示歷史地址的訪問順序 private int historyIndex; /* * * 構(gòu)造函數(shù) * 初始化圖形用戶界面 */ public WebBrowser(){ setTitle("網(wǎng)頁瀏覽器"); setResizable(false); setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); //為jEditorPanel 添加事件偵聽 jEditorPanel.addHyperlinkListener(this); //為組件fileMenu添加熱鍵'F' fileMenu.setMnemonic('F'); saveAsItem.setMnemonic('S'); //為另存為組件設(shè)置快捷鍵為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(); //設(shè)置大小 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); //為組件添加事件監(jiān)聽 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); } /* * 實現(xiàn)監(jiān)聽接口的ACTIONpERFORMED函數(shù) */ public void actionPerformed(ActionEvent e){ String url=""; //點擊轉(zhuǎn)向按鈕 if(e.getSource()==button){ //獲得地址欄的內(nèi)容 url=jurl.getText(); //url不為"",并且以"http://"開頭 if(url.length()>0&&url.startsWith("http://")){ try{ //JEditorPane組件顯示url的內(nèi)容鏈接 jEditorPanel.setPage(url); //將url的內(nèi)容添加到ArrayList的對象history中 history.add(url); //historyIndex的數(shù)值設(shè)為history的長度-1 historyIndex=history.size()-1; //設(shè)置成非編輯狀態(tài)jEditorPanel.setEditable(false); //重新布局 jEditorPanel.revalidate(); } catch(Exception ex){ //如果鏈接顯示失敗,則彈出選擇對話框“無法打開搜索頁” JOptionPane.showMessageDialog(WebBrowser.this,"無法打開搜索頁","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } //url不為"",并且不以“http://”kaitou else if(url.length()>0&&!url.startsWith("http://")){ //在url前面添加"http://" url="http://"+url; try{ jEditorPanel.setPage(url); history.add(url); historyIndex=history.size()-1; //設(shè)置成非編輯狀態(tài) jEditorPanel.revalidate(); }catch(Exception ex){ JOptionPane.showMessageDialog(WebBrowser.this, "無法打開該網(wǎng)頁","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } //沒有輸入url 即url為空 else if(url.length()==0){ JOptionPane.showMessageDialog(WebBrowser.this,"請輸入鏈接地址","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } //輸入地址后按回車 else if(e.getSource()==jurl){ url=jurl.getText(); if(url.length()>0&&url.startsWith("http://")){ try{ jEditorPanel.setPage(url); history.add(url); historyIndex=history.size()-1; //設(shè)置成非編輯狀態(tài) jEditorPanel.revalidate(); jurl.setMaximumSize(jurl.getPreferredSize()); }catch(Exception ex){ JOptionPane.showMessageDialog(WebBrowser.this, "無法打開該搜索頁","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } else if(url.length()>0&&!url.startsWith("http://")){ url="http://"+url; try{ jEditorPanel.setPage(url); history.add(url); historyIndex=history.size()-1; //設(shè)置成非編輯狀態(tài) jEditorPanel.revalidate(); }catch(Exception ex){ JOptionPane.showMessageDialog(WebBrowser.this, "無法打開該搜索頁","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } else if(url.length()==0){ JOptionPane.showMessageDialog(WebBrowser.this, "請輸入連接地址","網(wǎng)頁瀏覽器",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, "請輸入鏈接地址","網(wǎng)頁瀏覽器",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); jEditorPanel.setPage(url); jurl.setText(url.toString()); //設(shè)置成非編輯狀態(tài) jEditorPanel.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對象中本地地址之后的內(nèi)容 url=(String)history.get(historyIndex); jEditorPanel.setPage(url); jurl.setText(url.toString()); //設(shè)置成為非編輯狀態(tài) jEditorPanel.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("")){ //根據(jù)url獲得源代碼 getHtmlSource(url); //生成顯示源代碼的框架對象 ViewSourceFrame vsframe=new ViewSourceFrame(htmlSource); vsframe.setBounds(0,0,800,500); vsframe.setVisible(true); } else{ JOptionPane.showMessageDialog(WebBrowser.this, "請輸入鏈接地址","網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } //刷新 else if(e.getSource()==reloadItem){ url=jurl.getText(); if(url.length()>0&&url.startsWith("http://")){ try{ jEditorPanel.setPage(url); //設(shè)置為非編輯狀態(tài) jEditorPanel.revalidate(); }catch(Exception ex){ } } else if(url.length()>0&&url.startsWith("http://")){ url="http://"+url; try{ jEditorPanel.setPage(url); //設(shè)置成非編輯狀態(tài) jEditorPanel.revalidate(); }catch(Exception ex){ } } } } /* * 保存文件 */ void saveFile(final String url){ final String linesep=System.getProperty("line.separator"); chooser.setCurrentDirectory(new File(".")); chooser.setDialogType(JFileChooser.SAVE_DIALOG); chooser.setDialogTitle("另存為..."); if(chooser.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=chooser.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+"已經(jīng)被保存至"+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(),"網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); }catch(Exception e){ JOptionPane.showMessageDialog((Component)null,e.toString(),"網(wǎng)頁瀏覽器",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(),"網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); }catch(Exception e){ JOptionPane.showMessageDialog(WebBrowser.this, e.toString(),"網(wǎng)頁瀏覽器",JOptionPane.ERROR_MESSAGE); } } /* * 實現(xiàn)監(jiān)聽接口的hyperlinkupdate函數(shù) */ public void hyperlinkUpdate(HyperlinkEvent e){ try{ if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED) jEditorPanel.setPage(e.getURL()); }catch(Exception ex){ ex.printStackTrace(System.err); } } /* * 生成一個IE對象 */ public static void main(String[] args) { // TODO Auto-generated method stub try{ UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); }catch(Exception e){ } WebBrowser webBrowser=new WebBrowser(); webBrowser.pack(); webBrowser.setVisible(true); }}package WebBrowser;import java.awt.AWTEvent;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.io.IOException;import javax.swing.*;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.WindowConstants;import javax.swing.border.Border;/* * 源代碼框架 */ class ViewSourceFrame extends JFrame implements ActionListener { JPanel contentPane; JPanel panel1=new JPanel(); JPanel panel2=new JPanel(); Border border1; JButton closebutton=new JButton(); JButton savebutton=new JButton(); JScrollPane jScrollPanel=new JScrollPane(); JTextArea jTextArea1=new JTextArea(); String htmlSource; /* * 構(gòu)造函數(shù),初始圖形用戶界面 */ public ViewSourceFrame(String htmlSource){ this.htmlSource=htmlSource; enableEvents(AWTEvent.WINDOW_EVENT_MASK); setSize(new Dimension(600,500)); setTitle("源代碼"); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); contentPane=(JPanel)getContentPane(); contentPane.setLayout(new BorderLayout()); panel2.setLayout(new FlowLayout()); savebutton.setText("保存"); closebutton.setText("退出"); closebutton.addActionListener(this); savebutton.addActionListener(this); jScrollPanel.getViewport().add(jTextArea1,null); border1=BorderFactory.createEmptyBorder(4, 4, 4, 4); panel1.setLayout(new BorderLayout()); panel1.setBorder(border1); panel1.add(jScrollPanel, BorderLayout.CENTER); contentPane.add(panel1, BorderLayout.CENTER); panel2.add(savebutton); panel2.add(closebutton); contentPane.add(panel2,BorderLayout.SOUTH); this.jTextArea1.setEditable(true); this.jTextArea1.setText(this.htmlSource); //設(shè)置光標的位置,將其移動到文本區(qū)第o個字符 this.jTextArea1.setCaretPosition(0); } /* * 實現(xiàn)監(jiān)聽接口的actionPerformed函數(shù) */ public void actionPerformed(ActionEvent e){ String url=""; if(e.getSource()==closebutton){ dispose(); } else if(e.getSource()==savebutton){ JFileChooser fc=new JFileChooser(); int returnVal=fc.showSaveDialog(ViewSourceFrame.this); File saveFile=fc.getSelectedFile(); try{ FileWriter writeOut=new FileWriter(saveFile); writeOut.write(jTextArea1.getText()); writeOut.close(); }catch(IOException ex){ System.out.println("保存失敗"); } } }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北海市| 彭阳县| 泰兴市| 赣州市| 泽普县| 广德县| 甘肃省| 九台市| 洛宁县| 通化市| 通渭县| 宝山区| 钦州市| 盱眙县| 绥宁县| 渝北区| 眉山市| 巴塘县| 西昌市| 宁武县| 琼中| 吴川市| 荥阳市| 灌南县| 鹤庆县| 文成县| 蒙自县| 博客| 固始县| 澄江县| 格尔木市| 盐亭县| 巴青县| 玉山县| 商城县| 玉环县| 万山特区| 汤原县| 彭州市| 共和县| 东乌珠穆沁旗|