java浏览器课程设计

Python016

java浏览器课程设计,第1张

⑴ 怎样用Java制作一个简单浏览器解决方法

importjavax.swing.*

importjava.awt.*

importjava.awt.event.*

importjava.*

importjava.io.*

importjavax.swing.event.*

@SuppressWarnings("serial")

,Runnable

{

JButtonbutton

URLurl

JTextFieldtext

JEditorPaneeditPane

byteb[]=newbyte[118]

Threadthread

publicWin3()

{

text=newJTextField(20)

editPane=newJEditorPane()

editPane.setEditable(false)

button=newJButton("确定")

button.addActionListener(this)

thread=newThread(this)

JPanelp=newJPanel()

p.add(newJLabel("输入网址:"))

p.add(text)

p.add(button)

Containercon=getContentPane()

con.add(newJScrollPane(editPane),BorderLayout.CENTER)

con.add(p,BorderLayout.NORTH)

setBounds(60,60,400,300)

setVisible(true)

validate()

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

editPane.addHyperlinkListener(newHyperlinkListener()

{

publicvoidhyperlinkUpdate(HyperlinkEvente)

{

if(e.getEventType()==

HyperlinkEvent.EventType.ACTIVATED)

{

try{

editPane.setPage(e.getURL())

}

catch(IOExceptione1)

{

editPane.setText(""+e1)

}

}

}

}

)

}

publicvoidactionPerformed(ActionEvente)

{

if(!(thread.isAlive()))

thread=newThread(this)

try{

thread.start()

}

catch(Exceptionee)

{

text.setText("我正在读取"+url)

}

}

publicvoidrun()

{

try{

intn=-1

editPane.setText(null)

url=newURL(text.getText().trim())

editPane.setPage(url)

}

catch(MalformedURLExceptione1)

{

text.setText(""+e1)

return

}

catch(IOExceptione1)

{

text.setText(""+e1)

return

}

}

}

publicclassExample3

{

publicstaticvoidmain(Stringargs[])

{

newWin3()

}

}

⑵ 关于用java自己做一款浏览器。其具体的设计思路是什么,该怎么考虑,从哪方面入手。流程是什么。

你还是先出入门的程序练起吧。。。。

你提到的每一个部件都是一个比较沉重的课题。

⑶ 用java编写简易浏览器

地址栏如果有变化就不正常了,因为在你的代码中并没有执行更改地址栏的语句内:

bol.setSelectedIndex() 或 bol.setSelectedItem()

用 JEditorPane 做一容个类似浏览器显示的网页效果很难看。

有很多css,javascript无法正常解析。

如果一个网页中只含有 <div><table>这样的,还好些。

网页做的越漂亮(因为要做的漂亮就要用到css样式),显示出来越难看。

⑷ 用java编写一个图片浏览器

import java.awt.BorderLayout

import java.awt.Graphics

import java.awt.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.io.File

import java.util.ArrayList

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JFileChooser

import javax.swing.JFrame

import javax.swing.JMenu

import javax.swing.JMenuBar

import javax.swing.JMenuItem

import javax.swing.JPanel

public class ImageGallery extends JFrame implements ActionListener {

public static final int G_WIDTH = 400, G_HEIGHT = 620

public static final int L_WIDTH = 1200, L_HEIGHT = 520

public static final int MAX_R = 3, MAX_C = 2

public static final int GRID = 1, LARGE = 2

private JFileChooser chooser

private JMenuBar toolBar

private JMenu menu

private JMenuItem open

private ArrayList<String>paths

private JPanel showingPanel, buttonPanel

private int page = 1

private int count = 0

private int showType = GRID

private int pageMax

private JButton last, next, large, grid

public ImageGallery() {

.setTitle("Image gallery 0.1")

this.setBounds(100, 100, G_WIDTH, G_HEIGHT)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

toolBar = new JMenuBar()

chooser = new JFileChooser()

chooser.setCurrentDirectory(new java.io.File("."))

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY)

menu = new JMenu("File")

toolBar.add(menu)

open = new JMenuItem("open")

open.addActionListener(this)

menu.add(open)

paths = new ArrayList<String>()

this.setJMenuBar(toolBar)

showingPanel = new JPanel()

buttonPanel = new JPanel()

last = new JButton("last")

last.addActionListener(this)

next = new JButton("next")

next.addActionListener(this)

large = new JButton("large")

large.addActionListener(this)

grid = new JButton("grid")

grid.addActionListener(this)

buttonPanel.add(last)

buttonPanel.add(large)

buttonPanel.add(grid)

buttonPanel.add(next)

this.add(buttonPanel, BorderLayout.SOUTH)

this.add(showingPanel)

this.setVisible(true)

}

public void doOpen() {

int result = chooser.showOpenDialog(null)

if (result == JFileChooser.APPROVE_OPTION) {

String directory = chooser.getSelectedFile().getPath()

this.getAllImage(directory)

for (String s : this.paths) {

System.out.println(s)

}

this.showingImage()

}

}

public void getAllImage(String directory) {

paths.clear()

page = 1

count = 0

File file = new File(directory)

if (file.isDirectory()) {

String[] list = file.list()

for (String s : list) {

String path = directory + "\\" + s

File temp = new File(path)

if (!temp.isDirectory()) {

this.paths.add(path)

}

}

}

}

public void changePage(int page) {

if (!paths.isEmpty()) {

switch (showType) {

case GRID:

this.page += page

if (this.page == 0) {

this.page = 1

}

if (this.page >pageMax) {

this.page = pageMax

}

break

case LARGE:

this.count += page

if (count <0) {

count = 0

}

if (count >paths.size() - 1) {

count = paths.size() - 1

}

break

}

this.showingImage()

}

}

public void showingImage() {

this.remove(showingPanel)

showingPanel = new JPanel()

int size = paths.size()

int max = MAX_R * MAX_C

pageMax = (size % max == 0 ? size / max : size / max + 1)

switch (showType) {

case GRID:

this.setBounds(100, 100, G_WIDTH, G_HEIGHT)

showingPanel.setLayout(new GridLayout(MAX_R, MAX_C - 1))

int i = (page - 1) * max

int j = page * max

for (i <j &&i <sizei++) {

String path = paths.get(i)

showingPanel.add(new ImagePanel(path))

}

break

case LARGE:

int left = count - 1

int right = count + 1

this.setBounds(100, 100, L_WIDTH, L_HEIGHT)

showingPanel.setLayout(new GridLayout(1, 2))

if (left >= 0) {

showingPanel.add(new ImagePanel(paths.get(left)))

} else {

showingPanel.add(new ImagePanel(""))

}

showingPanel.add(new ImagePanel(paths.get(count)))

if (right <size) {

showingPanel.add(new ImagePanel(paths.get(right)))

} else {

showingPanel.add(new ImagePanel(""))

}

break

}

this.add(showingPanel, BorderLayout.CENTER)

showingPanel.updateUI()

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new ImageGallery()

}

class ImagePanel extends JPanel {

private ImageIcon image

ImagePanel(String path) {

image = new ImageIcon(path)

}

public ImageIcon getImageIcon() {

return this.image

}

@Override

protected void paintComponent(Graphics g) {

// TODO Auto-generated method stub

g.drawImage(image.getImage(), 0, 0, this.getWidth(), this

.getHeight(), this)

}

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

String key = e.getActionCommand()

System.out.println(key)

if (key.equals("open")) {

doOpen()

} else if (key.endsWith("last")) {

changePage(-1)

} else if (key.endsWith("next")) {

changePage(1)

} else if (key.endsWith("large")) {

if (!paths.isEmpty()) {

count =0

showType = LARGE

showingImage()

}

} else if (key.endsWith("grid")) {

if (!paths.isEmpty()) {

page = 1

showType = GRID

showingImage()

}

}

}

}

⑸ JAVA编写浏览器

可以看下这个专属

//blog.csdn/LJLOVELZ/archive/2007/05/04/1596205.aspx

⑹ 用java编写一个浏览器

import java.awt.*

import java.awt.event.*

import java.*

import java.io.*

import javax.swing.*

import javax.swing.text.DefaultStyledDocument

//HTTP连接与浏览

public class HTTPBrowser extends JFrame{

JTextField jtfAddress//输入文件地址或网址

JTextPane jtpShow//显示页面

JTextArea jtaSource//显示HTML源文件

public HTTPBrowser(){

super("HTTP连接与浏览")//调用父类构造函数

jtfAddress=new JTextField(30)//实例化地址输入框

jtpShow=new JTextPane()//实例化显示内容框

jtaSource=new JTextArea()

JPanel p1=new JPanel()//实例化面板

JSplitPane spane=new JSplitPane(JSplitPane.VERTICAL_SPLIT)//实例化分隔面板

p1.add(new JLabel("地址"))//增加组件到面板上

p1.add(jtfAddress)

spane.add(new JScrollPane(jtpShow),JSplitPane.TOP)

spane.add(new JScrollPane(jtaSource),JSplitPane.BOTTOM)

spane.setDividerLocation(130)//设置分隔位置

spane.setDividerSize(2)//设置分隔栏尺寸

Container container=getContentPane()//得到容器

container.add(p1,BorderLayout.NORTH)//增加组件到容器上

container.add(spane,BorderLayout.CENTER)

jtfAddress.addActionListener(new ShowHTMLListener())//输入地址文本域事件处理

setSize(380,300)//设置窗口尺寸

setVisible(true)//设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口时退出程序

}

class ShowHTMLListener implements ActionListener {

public void actionPerformed(ActionEvent event) {

try{

URL address=new URL(jtfAddress.getText())//得到HTML页面的URL地址

jtpShow.setContentType("text/")//设置内容格式

jtpShow.setPage(address)//设置显示页面

BufferedReader in= new BufferedReader(new InputStreamReader(address.openStream()))//获取输入流

String line

StringBuffer content = new StringBuffer()//文件内容

while ((line = in.readLine()) != null) { //读取文件

content.append(line+"\n")

}

jtaSource.setText(new String(content))//设置显示文本

in.close()//关闭输入流

}

catch (Exception ex){

ex.printStackTrace()//输出出错信息

}

}

}

public static void main(String[] args){

new HTTPBrowser()

}

}

这还有一个

import java.awt.*

import java.awt.event.*

import java.URL

import javax.swing.*

//浏览器

public class HTTPBrowserDemo extends JFrame{

JTextField jtfAddress//输入文件地址或网址

JButton jbGo//转到文件按钮

JTextPane jtpShow//显示文件

JLabel jlInfo//提示信息

public HTTPBrowserDemo(){

super("浏览器")//调用父类构造函数

jtfAddress=new JTextField(20)//实例化地址输入框

jbGo=new JButton("转到")//实例化转向按钮

jtpShow=new JTextPane()//实例化显示内容框

jlInfo=new JLabel()//实例化信息提示标签

JPanel panel=new JPanel()//实例化面板

panel.add(new JLabel("地址"))//增加组件到面板上

panel.add(jtfAddress)

panel.add(jbGo)

JScrollPane jsp=new JScrollPane(jtpShow)//实例化滚动窗体

Container container=getContentPane()//得到容器

container.add(panel,BorderLayout.NORTH)//增加组件到容器上

container.add(jsp,BorderLayout.CENTER)

container.add(jlInfo,BorderLayout.SOUTH)

jbGo.addActionListener(new ShowHTMLListener())//事件处理,发生按钮点击时显示页面内容

jtfAddress.addActionListener(new ShowHTMLListener())

setSize(350,280)//设置窗口尺寸

setVisible(true)//设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口时退出程序

}

class ShowHTMLListener implements ActionListener { //显示页面内容事件处理

public void actionPerformed(ActionEvent event) {

try{

jlInfo.setText("正在连接...")//显示提示信息

URL address=new URL(jtfAddress.getText())//得到HTML页面的URL地址

jtpShow.setPage(address)//设置显示页面

jlInfo.setText("完成")

}

catch (Exception ex){

jlInfo.setText("连接出错")

ex.printStackTrace()//输出出错信息

}

}

}

public static void main(String[] args){

new HTTPBrowserDemo()

}

}

⑺ 用Java代码怎么在浏览器中显示一个网页

package .test

import java.lang.reflect.Method

//实现打开浏览器并跳到指定网址的类

public class BareBonesBrowserLaunch {

public static void openURL(String url) {

try {

browse(url)

} catch (Exception e) {

}

}

private static void browse(String url) throws Exception {

//获取操作系统的名字

String osName = System.getProperty("os.name", "")

if (osName.startsWith("Mac OS")) {

//苹果的打开方式

Class fileMgr = Class.forName(".apple.eio.FileManager")

Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class })

openURL.invoke(null, new Object[] { url })

} else if (osName.startsWith("Windows")) {

//windows的打开方式。

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url)

} else {

// Unix or Linux的打开方式

String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "scape" }

String browser = null

for (int count = 0count <browsers.length &&browser == nullcount++)

//执行代码,在brower有值后跳出,

//这里是如果进程创建成功了,==0是表示正常结束。

if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0)

browser = browsers[count]

if (browser == null)

throw new Exception("Could not find web browser")

else

//这个值在上面已经成功的得到了一个进程。

Runtime.getRuntime().exec(new String[] { browser, url })

}

}

}

⑻ 如何用java编写浏览器

正好我前几天做了一来个自浏览器实例,挺容易的其实。就用到了:

1.awt&swing编界面和响应。

2.网页显示区域是用JEditPane来显示的。通过在上方设置一个JTextField输入url以后,这里获得url,然后直接setPage到url就行了。也不是太难。

其他没啥如果楼主要代码的话留下邮箱。

楼主编浏览器大概需要以下知识:

1.javase基础

2.协议大致传输过程

3.基础的awt&swing,以及窗口响应布局等

4.浅显的多线程知识

⑼ 超简单的web浏览器用java实现

截图:

进入 //网页:

访问硬盘上的Html文件:file:盘符://文件名 (如果满意就采纳吧。。)

import java.awt.*

import java.awt.event.*

import java.URL

import javax.swing.*

public class HTTPBrowserDemo extends JFrame{

JTextField jtfAddress//输入文件地址或网址

JButton jbGo//转到文件按钮

JTextPane jtpShow//显示文件

JLabel jlInfo//提示信息

public HTTPBrowserDemo(){

super("浏览器")//调用父类构造函数

jtfAddress=new JTextField(20)//实例化地址输入框

jbGo=new JButton("转到")//实例化转向按钮

jtpShow=new JTextPane()//实例化显示内容框

jlInfo=new JLabel()//实例化信息提示标签

JPanel panel=new JPanel()//实例化面板

panel.add(new JLabel("地址"))//增加组件到面板上

panel.add(jtfAddress)

panel.add(jbGo)

JScrollPane jsp=new JScrollPane(jtpShow)//实例化滚动窗体

Container container=getContentPane()//得到容器

container.add(panel,BorderLayout.NORTH)//增加组件到容器上

container.add(jsp,BorderLayout.CENTER)

container.add(jlInfo,BorderLayout.SOUTH)

jbGo.addActionListener(new ShowHTMLListener())//事件处理,发生按钮点击时显示页面内容

jtfAddress.addActionListener(new ShowHTMLListener())

setSize(350,280)//设置窗口尺寸

setVisible(true)//设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口时退出程序

}

class ShowHTMLListener implements ActionListener { //显示页面内容事件处理

public void actionPerformed(ActionEvent event) {

try{

jlInfo.setText("正在连接...")//显示提示信息

URL address=new URL(jtfAddress.getText())//得到HTML页面的URL地址

jtpShow.setPage(address)//设置显示页面

jlInfo.setText("完成")

}

catch (Exception ex){

jlInfo.setText("连接出错")

ex.printStackTrace()//输出出错信息

}

}

}

public static void main(String[] args){

new HTTPBrowserDemo()

}

}

⑽ 怎样用Java制作一个简单浏览器

java制作浏览器的话,可以考虑使用android来制作一个,简单实现加载网页资源等等。

import java.awt.* 

import java.awt.event.* 

import java.io.IOException 

import java.net.* 

import javax.swing.* 

import javax.swing.event.HyperlinkEvent 

import javax.swing.event.HyperlinkListener 

public class HTTPBrowserDemo extends JFrame { 

        private JLabel jlAddress,jlInfo 

        private JTextField jtfAddress 

        private JEditorPane jtpShow 

        private JPanel panel 

        private JButton btnGO 

         

        public static void main(String[] args) { 

                HTTPBrowserDemo hbd=new HTTPBrowserDemo() 

        } 

        HTTPBrowserDemo(){ 

                 

                jlAddress=new JLabel("地址") 

                jlInfo=new JLabel() 

                jtpShow=new JEditorPane() 

                panel=new JPanel() 

                jtfAddress=new JTextField(20) 

                btnGO=new JButton("转到") 

                 

                add(panel,BorderLayout.NORTH) 

                add(jtpShow,BorderLayout.CENTER) 

                add(jlInfo,BorderLayout.SOUTH) 

                 

                panel.add(jlAddress) 

                panel.add(jtfAddress) 

                panel.add(btnGO) 

                 

                setVisible(true) 

                setSize(350, 280) 

                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 

                 

                btnGO.addActionListener(new ShowHTMLListener()) 

     jtpShow.setEditable(false) 

                jtpShow.addHyperlinkListener(new MyHyperlinkListener()) 

        } 

        class ShowHTMLListener implements ActionListener{ 

                public void actionPerformed(ActionEvent e){ 

                        String str=jtfAddress.getText() 

                        try { 

                                if (!str.startsWith("http://")){ 

                                        str="http://"+str 

                                } 

                                jlInfo.setText("连接中...") 

                                URL address=new URL(str) 

                                jtpShow.setPage(address) 

                                jlInfo.setText("完成") 

                        } catch (MalformedURLException e1) { 

                                // TODO Auto-generated catch block 

                                e1.printStackTrace() 

                        } catch (IOException e2) { 

                                // TODO: handle exception 

                        } 

                } 

        } 

        class MyHyperlinkListener implements HyperlinkListener{ 

                public void hyperlinkUpdate(HyperlinkEvent e) { 

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

                                JEditorPane pane=(JEditorPane)e.getSource() 

                                try { 

                                        pane.setPage(e.getURL()) 

                                } catch (IOException e1) { 

                                        // TODO Auto-generated catch block 

                                        e1.printStackTrace() 

                                } 

                        } 

                }         

        } 

}

3.WebBrowser.java

package CH04.源程序

/*

**网页浏览器主程序

**WebBrowser.java

*/

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)

//为jEditorPane1添加事件侦听

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

//重新布局

jEditorPane1.setEditable(false)//add by copy editor :)

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)//add by copy editor :)

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)//add by copy editor :)

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)//add by copy editor :)

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

jEditorPane1.setEditable(false)//add by copy editor :)

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.setEditable(false)//add by copy editor :)

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 ("")) {

//根据url,获得源代码

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)//add by copy editor :)

jEditorPane1.revalidate ()

}

catch(Exception ex) {

}

}

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

url="http://"+url

try {

jEditorPane1.setPage (url )

jEditorPane1.setEditable(false)//add by copy editor :)

jEditorPane1.revalidate ()

}

catch(Exception ex) {

}

}

}

}

/*

**保存文件

*/

void saveFile (final String url) {

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

chooser1.setCurrentDirectory (new File ("."))

chooser1.setDialogType (JFileChooser.SAVE_DIALOG)

chooser1.setDialogTitle ("另存为...")

if(chooser1.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 = chooser1.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) {

/* if(e.getEventType () == HyperlinkEvent.EventType.ACTIVATED) {

String url = jurl.getText()

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

try {

jEditorPane1.setPage (url)

jEditorPane1.revalidate ()

}

catch(Exception ex) {

}

}

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

url="http://"+url

try {

jEditorPane1.setPage (url )

jEditorPane1.revalidate ()

}

catch(Exception ex) {

}

}

}

*/

// Revised by copy editor :) Now with new code to help hyperlink

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)

}

}