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.javapackage 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)
}
}