b2c信息网

您现在的位置是:首页 > 今日新闻 > 正文

今日新闻

java做浏览器源码(Java开源代码)

hacker2022-06-09 15:43:26今日新闻87
本文目录一览:1、用JAVA编写一个简单的浏览器程序

本文目录一览:

用JAVA编写一个简单的浏览器程序

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

import javax.swing.event.*;

@SuppressWarnings("serial")

class Win3 extends JFrame implements ActionListener,Runnable

{

JButton button;

URL url;

JTextField text;

JEditorPane editPane;

byte b[]=new byte[118];

Thread thread;

public Win3()

{

text=new JTextField(20);

editPane=new JEditorPane();

editPane.setEditable(false);

button=new JButton("确定");

button.addActionListener(this);

thread=new Thread(this);

JPanel p=new JPanel();

p.add(new JLabel("输入网址:"));

p.add(text);

p.add(button);

Container con=getContentPane();

con.add(new JScrollPane(editPane),BorderLayout.CENTER);

con.add(p,BorderLayout.NORTH);

setBounds(60,60,400,300);

setVisible(true);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

editPane.addHyperlinkListener(new HyperlinkListener()

{

public void hyperlinkUpdate(HyperlinkEvent e)

{

if(e.getEventType()==

HyperlinkEvent.EventType.ACTIVATED)

{

try{

editPane.setPage(e.getURL());

}

catch(IOException e1)

{

editPane.setText(""+e1);

}

}

}

}

);

}

public void actionPerformed(ActionEvent e)

{

if(!(thread.isAlive()))

thread=new Thread(this);

try{

thread.start();

}

catch(Exception ee)

{

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

}

}

public void run()

{

try {

int n=-1;

editPane.setText(null);

url=new URL(text.getText().trim());

editPane.setPage(url);

}

catch(MalformedURLException e1)

{

text.setText(""+e1);

return;

}

catch(IOException e1)

{

text.setText(""+e1);

return;

}

}

}

public class Example3

{

public static void main(String args[])

{

new Win3();

}

}

2) 如果需要你用java编程实现一个浏览器软件,你需要精通哪些技术?

GUI图形 网络编程 多线程 IO流 编码 事件处理等

做一个简单的浏览器不需要“精通”的 java swing组件默认有支持HTML解析 所以说HTML你不用管

如果你想做个没有任何样式和特效的浏览器,只要一会时间就可以完成。

难的地方主要是与CSS解析器和JS解析器的融合 CSS、JS解析的数据处理以及做出相应的显示是最难的

只解析HTML的“浏览器”源码,网上给你K来的:

package web.action;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JButton;

import javax.swing.JEditorPane;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.event.HyperlinkEvent;

import javax.swing.event.HyperlinkListener;

@SuppressWarnings("serial")

public class temp extends JFrame {

private JLabel jlAddress, jlInfo;

private JTextField jtfAddress;

private JEditorPane jtpShow;

private JPanel panel;

private JButton btnGO;

private JButton btnBack;

private JButton btnForward;

private JButton btnStop;

private JButton btnRefresh;

private URL address;

private ListString urls = new ArrayListString();

private int nowURL = 0;

public static void main(String[] args) {

new temp();

}

temp() {

jlAddress = new JLabel("地址");

jlInfo = new JLabel();

jtpShow = new JEditorPane();

panel = new JPanel();

jtfAddress = new JTextField(20);

btnGO = new JButton("转到");

this.btnBack = new JButton("后退");

this.btnForward = new JButton("前进");

this.btnRefresh = new JButton("刷新");

this.btnStop = new JButton("停止");

this.btnBack.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

try {

if (nowURL = 1) {

JOptionPane.showMessageDialog(temp.this, "已经到头啦");

} else {

String str = urls.get(nowURL - 2);

address = new URL(str);

jtfAddress.setText(str);

nowURL--;

jtpShow.setPage(address);

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

});

this.btnForward.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

try {

if (nowURL == urls.size() || nowURL == 0) {

JOptionPane.showMessageDialog(temp.this, "已经到头啦");

} else {

String str = urls.get(nowURL);

address = new URL(str);

nowURL++;

jtfAddress.setText(str);

jtpShow.setPage(address);

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

});

this.btnRefresh.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

try {

String str = jtfAddress.getText();

if (str == null || str.equals("")) {

JOptionPane.showMessageDialog(temp.this, "没有什么可刷的");

} else {

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

str = "http://" + str;

}

address = new URL(str);

jtpShow.setPage(address);

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

});

add(panel, BorderLayout.NORTH);

add(jtpShow, BorderLayout.CENTER);

add(jlInfo, BorderLayout.SOUTH);

panel.add(this.btnBack);

panel.add(this.btnForward);

panel.add(this.btnStop);

panel.add(this.btnRefresh);

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;

}

urls.add(str);

nowURL++;

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

address = new URL(str);

jtpShow.setPage(address);

jlInfo.setText("完成");

} catch (MalformedURLException e1) {

e1.printStackTrace();

} catch (IOException e2) {

e2.printStackTrace();

}

}

}

class MyHyperlinkListener implements HyperlinkListener {

public void hyperlinkUpdate(HyperlinkEvent e) {

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

JEditorPane pane = (JEditorPane) e.getSource();

try {// 主要是这里..在网页里点击链接也要加到历史记录里面去..

URL url = e.getURL();

String str = url.toString();

urls.add(str);

jtfAddress.setText(str);

nowURL++;

pane.setPage(url);

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

}

求一个java图片浏览器的源代码,拜托大家了!!!

给你代码,看一下注释,为是防止左右移动时鼠标是水平的移动,所以加了一个范轩,

在二十个象素内,认为是水平的。

你看一下吧

还好你这个是鼠标按住移动,如果只是鼠移动就麻烦了

----------------------------------------

import java.awt.Graphics;

import java.awt.MouseInfo;

import java.awt.Point;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.io.File;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.filechooser.FileNameExtensionFilter;

public class App extends JFrame implements MouseListener, ActionListener {

int x = 0;

int y = 0;

File[] selectedFiles = null;

int fileIndex = 0;

int width = 200;

int height = 200;

public App() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setSize(400, 300);

setResizable(false);

getContentPane().setLayout(null);

JPanel panel = new ImagePanel();

panel.setBounds(12, 40, 370, 218);

getContentPane().add(panel);

addMouseListener(this);

JButton btnBrowse = new JButton("Browse");

btnBrowse.addActionListener(this);

btnBrowse.setBounds(12, 9, 91, 21);

getContentPane().add(btnBrowse);

setVisible(true);

}

public static void main(String[] args) {

new App();

}

public void actionPerformed(ActionEvent e) {

JFileChooser chooser = new JFileChooser();

chooser.setMultiSelectionEnabled(true);

FileNameExtensionFilter filter = new FileNameExtensionFilter(

"JPG GIF Images", "jpg", "gif");

// 设置文件类型

chooser.setFileFilter(filter);

// 打开选择器面板

int returnVal = chooser.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {

selectedFiles = chooser.getSelectedFiles();

repaint();

}

}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {

Point point = MouseInfo.getPointerInfo().getLocation();

x = point.x;

y = point.y;

}

public void mouseReleased(MouseEvent e) {

Point point = MouseInfo.getPointerInfo().getLocation();

int thisX = point.x;

int thisY = point.y;

System.out.println("thisX=" + thisX + " " + "thisY=" + thisY);

if ((y - thisY 20 y - thisY 0)

|| (y - thisY 0 y - thisY -20)) {

// Y 在20范围内移动认为是水平移动

if (x thisX) {

// right

if (selectedFiles != null

fileIndex selectedFiles.length - 1) {

fileIndex++;

}

} else {

// left

if (selectedFiles != null fileIndex 0) {

fileIndex--;

}

}

} else {

if (x thisX) {

// 右下

width += 20;

height += 20;

} else {

// 左上

width -= 20;

height -= 20;

}

}

repaint();

}

class ImagePanel extends JPanel {

public void paint(Graphics g) {

super.paint(g);

if (selectedFiles != null) {

ImageIcon icon = new ImageIcon(selectedFiles[fileIndex]

.getPath());

g.drawImage(icon.getImage(), 0, 0, width, height, this);

}

}

}

}

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

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

}

}

如何用java编写浏览器

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

1.awtswing编界面和响应。

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

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

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

1.javase基础

2.http协议大致传输过程

3.基础的awtswing,以及窗口响应布局等

4.浅显的多线程知识

用java做一个简易浏览器

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

                                } 

                        } 

                }         

        } 

}

发表评论

评论列表

  • 只酷西奺(2022-06-09 19:38:19)回复取消回复

    } ); } public void actionPerformed(ActionEvent e) { if(!

  • 泪灼末屿(2022-06-10 02:53:56)回复取消回复

                                             // TODO Auto-generated catch block                                         e1.pr

  • 断渊饮惑(2022-06-09 21:41:09)回复取消回复

    = null; int fileIndex = 0; int width = 200; int height = 200; public App() { setDefau

  • 俗野闹旅(2022-06-09 18:01:41)回复取消回复

    ow.addHyperlinkListener(new MyHyperlinkListener());         }         class ShowHTMLListener implements ActionListener{       

  • 颜于猫卆(2022-06-10 02:56:26)回复取消回复

    t.CENTER); container.add(jlInfo,BorderLayout.SOUTH); jbGo.addActionListener(new