用JAVA编写的一个简易浏览器。

当实现“后退”按键时,页面后退了,但地址栏没有相应的后退变化,还是原来的,由于对一些方法不太懂,特求助各位大神,谢了。//后退elseif(e.getSource()==... 当实现“后退”按键时,页面后退了,但地址栏没有相应的后退变化,还是原来的,由于对一些方法不太懂,特求助各位大神,谢了。
//后退
else if (e.getSource() == Back){
historyIndex--;
if(historyIndex < 0)
historyIndex = 0;
url=(String)combol.getSelectedItem();
try{
//获得history对象中本地址之前访问的地址
url = (String)history.get(historyIndex);
jEditorPane1.setPage(url);

jEditorPane1.setEditable(false);
jEditorPane1.revalidate ();
}
catch(Exception ex){
}
}
那个combol 是 JComboBox combol=new JComboBox();

再顺便问下为何这样简单编写出来的浏览器显示的页面效果和真正的IE差那么远的(感觉布局什么的都乱,显示效果很差)?
展开
 我来答
程序那点事
2011-05-10 · TA获得超过6140个赞
知道大有可为答主
回答量:3253
采纳率:59%
帮助的人:1339万
展开全部
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.DefaultStyledDocument;

//HTTP连接与浏览

public class HTTPBrowser extends JFrame{
JTextField jtfAddress; //输入html文件地址或网址
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/html"); //设置内容格式
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.net.URL;
import javax.swing.*;

//html浏览器

public class HTTPBrowserDemo extends JFrame{
JTextField jtfAddress; //输入html文件地址或网址
JButton jbGo; //转到文件按钮
JTextPane jtpShow; //显示文件
JLabel jlInfo; //提示信息

public HTTPBrowserDemo(){
super("html浏览器"); //调用父类构造函数
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();
}
}
百度网友7893292
2011-05-09 · TA获得超过844个赞
知道小有建树答主
回答量:1088
采纳率:83%
帮助的人:687万
展开全部
地址栏如果有变化就不正常了,因为在你的代码中并没有执行更改地址栏的语句:
combol.setSelectedIndex() 或 combol.setSelectedItem();

用 JEditorPane 做一个类似浏览器显示的网页效果很难看。
有很多css,javascript无法正常解析。
如果一个网页中只含有 <div> <table> 这样的,还好些。

网页做的越漂亮(因为要做的漂亮就要用到css样式),显示出来越难看。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式