java浏览器课程设计

Python012

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来制作一个,简单实现加载网页资源等等。

java浏览器开发,其实很简单, 使用JavaFX的WebView组件即可.(支持html5)也可以在swing里使用JFXPanel然后添加WebView

效果图如下

参考代码如下(java8+win10 x64 编写,测试)

import javafx.application.Application

import javafx.concurrent.Worker.State

import javafx.geometry.Insets

import javafx.scene.Scene

import javafx.scene.control.*

import javafx.scene.layout.*

import javafx.scene.web.*

import javafx.stage.Stage

public class WebViewTest extends Application {

public static void main(String[] args) {

launch(args)

}

@Override

public void start(Stage primaryStage) throws Exception {

//顶部

HBox hbox=new HBox(8)

Label labeAddr=new Label("地址")

TextField tfAddr = new TextField()

tfAddr.setMinWidth(500)

tfAddr.setText("http://www.baidu.com")

Button btnGo = new Button("Go转到")

Button btnGoBack=new Button("<-")

Button btnH=new Button("->")

TextField tfSerch = new TextField()

Button btnSerch= new Button("捜")

hbox.getChildren().addAll(labeAddr,tfAddr,btnGoBack,btnH,btnGo,tfSerch,btnSerch)

hbox.setPadding(new Insets(5))

//中间

WebView wv = new WebView()

WebEngine we = wv.getEngine()

we.getLoadWorker().stateProperty().addListener((ob, ov, nv) ->{

if(nv==State.SCHEDULED) {

tfAddr.setText(we.getLocation())//

}

})

//底部

Label labelBottom = new Label()

labelBottom.textProperty().bind(we.getLoadWorker().messageProperty())//底下的信息显示

BorderPane root = new BorderPane()

root.setTop(hbox)

root.setCenter(wv)

root.setBottom(labelBottom)

Scene scene = new Scene(root, 900, 600)

primaryStage.setTitle("JavaFX 雪飞潇潇 web浏览器")

primaryStage.setScene(scene)

primaryStage.show()

btnGo.setOnAction(e ->{

we.load(tfAddr.getText().trim())

})

btnGoBack.setOnAction(e->{

we.executeScript("history.back()")//执行JavaScript,后退

})

btnH.setOnAction(e->{

we.executeScript("history.forward()")//执行JavaScript,前进

})

//搜索

btnSerch.setOnAction(e->{

we.load("https://www.baidu.com/s?wd="+tfSerch.getText())

})

}

}