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