import?java.awt.BorderLayout;
我們擁有10年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、微信開發(fā)、小程序開發(fā)、成都手機(jī)網(wǎng)站制作、H5技術(shù)、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java點虐 .HttpURLConnection;
import?java點虐 .MalformedURLException;
import?java點虐 .URL;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JPanel;
import?javax.swing.JScrollPane;
import?javax.swing.JTextArea;
import?javax.swing.JTextField;
public?class?HttpViewer?extends?JFrame?{
private?JTextField?urlInput;
private?JTextArea?viewArea;
public?static?void?main(String[]?args)?{
new?HttpViewer();
}
public?HttpViewer()?{
this.setTitle("Http?Viewer");
this.setSize(800,?600);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
initAction();
this.setVisible(true);
}
//?這個方法用來設(shè)置窗口布局
private?void?initPanel()?{
JPanel?northPanel?=?new?JPanel();
JLabel?urlInputLabel?=?new?JLabel("URL:");
urlInput?=?new?JTextField(60);
northPanel.add(urlInputLabel);
northPanel.add(urlInput);
this.add(northPanel,?BorderLayout.NORTH);
JPanel?centerPanel?=?new?JPanel();
viewArea?=?new?JTextArea(27,?60);
centerPanel.add(new?JScrollPane(viewArea));
this.add(centerPanel);
}
//?這個方法用來設(shè)置事件
private?void?initAction()?{
urlInput.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
String?text?=?urlInput.getText();
if?(text?==?null?||?text.length()?==?0)?{
viewArea.setText("您沒有輸入URL");
return;
}
try?{
URL?url?=?new?URL(text);
配碧??????String?context?=?getContent(url);
if?(context?!=?null)?{
渣賣蔽?searchFromText(context);
}
}?catch?(MalformedURLException?e1)?{
viewArea.setText("您輸入的URL不合法:"?+?text);
}
}
});
}
private?String?getContent(URL?url)?{
StringBuffer?builder?=?new?StringBuffer();
int?responseCode?=?-1;
如州?????HttpURLConnection?con?=?null;
try?{
con?=?(HttpURLConnection)?url.openConnection();
con.setRequestProperty("User-Agent",
"Mozilla/4.0?(compatible;?MSIE?5.0;?Windows?NT;?DigExt)");//?IE代理進(jìn)行下載
con.setConnectTimeout(60000);
con.setReadTimeout(60000);
//?獲得網(wǎng)頁返回信息碼
responseCode?=?con.getResponseCode();
if?(responseCode?==?-1)?{
viewArea.setText("連接失敗:"?+?url.toString());
return?null;
}
if?(responseCode?=?400)?{
viewArea.setText("請求失敗,錯誤碼:"?+?responseCode);
return?null;
}
InputStream?is?=?con.getInputStream();
InputStreamReader?isr?=?new?InputStreamReader(is);
BufferedReader?br?=?new?BufferedReader(isr);
String?str?=?null;
while?((str?=?br.readLine())?!=?null)
builder.append(str);
is.close();
}?catch?(IOException?e)?{
e.printStackTrace();
viewArea.setText("IOException:?"?+?url.toString());
}?finally?{
con.disconnect();
}
return?builder.toString();
}
private?void?searchFromText(String?context)?{
viewArea.setText("查找URL中:\n");
Pattern?pattern?=?Pattern點抗 pile("a(?[^]+)*(.*?)/a");
Matcher?matcher?=?pattern.matcher(context);
while?(matcher.find())?{
for?(String?prop?:?matcher.group(1).split("?"))?{
int?indexOf?=?prop.indexOf('=');
if?(indexOf??0)?{
if?(prop.substring(0,?indexOf).equals("href"))?{
String?url2?=?prop.substring(indexOf?+?2,?prop.length()?-?1);
viewArea.append(url2?+?"\n");
}
}
}
}
}
}
⑴ 怎樣用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("輸入網(wǎng)址:"));
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();
}
}
⑵ 關(guān)于用java自己做一款瀏覽器。其具體的設(shè)計思路是什么,該怎么考慮,從哪方面入手。流程是什么。
你還是先出入門的程序練起吧。。。。
你提到的每一個部件都是一個比較沉重的課題。
⑶ 用java編寫簡易瀏覽器
地址欄如果有變化就不正常了,因為在你的代碼中并沒有執(zhí)行更改地址欄的語句內(nèi):
bol.setSelectedIndex() 或 bol.setSelectedItem();
用 JEditorPane 做一容個類似瀏覽器顯示氏沖的網(wǎng)頁效果很殲敬殲難看。
有很多css,javascript無法正常解析。
如果一個網(wǎng)頁中只含有 div table 這樣的,還好些。
網(wǎng)頁做的越漂亮(因為要做的漂亮就要用到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 ArrayListString 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 ArrayListString();
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 size; i++) {
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; //輸入文件地址或網(wǎng)址
JTextPane jtpShow; //顯示頁面
JTextArea jtaSource; //顯示HTML源文件
public HTTPBrowser(){
super("HTTP連接與瀏覽"); //調(diào)用父類構(gòu)造函數(shù)
jtfAddress=new JTextField(30); //實例化地址輸入框
jtpShow=new JTextPane(); //實例化顯示內(nèi)容框
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); //設(shè)置分隔位置
spane.setDividerSize(2); //設(shè)置分隔欄尺寸
Container container=getContentPane(); //得到容器
container.add(p1,BorderLayout.NORTH); //增加組件到容器上
container.add(spane,BorderLayout.CENTER);
jtfAddress.addActionListener(new ShowHTMLListener()); //輸入地址文本域事件處理
setSize(380,300); //設(shè)置窗口尺寸
setVisible(true); //設(shè)置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時退出程序
}
class ShowHTMLListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
try{
URL address=new URL(jtfAddress.getText()); //得到HTML頁面的URL地址
jtpShow.setContentType("text/"); //設(shè)置內(nèi)容格式
jtpShow.setPage(address); //設(shè)置顯示頁面
BufferedReader in= new BufferedReader(new InputStreamReader(address.openStream())); //獲取輸入流
String line;
StringBuffer content = new StringBuffer(); //文件內(nèi)容
while ((line = in.readLine()) != null) { //讀取文件
content.append(line+"\n");
}
jtaSource.setText(new String(content)); //設(shè)置顯示文本
in.close(); //關(guān)閉輸入流
}
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; //輸入文件地址或網(wǎng)址
JButton jbGo; //轉(zhuǎn)到文件按鈕
JTextPane jtpShow; //顯示文件
JLabel jlInfo; //提示信息
public HTTPBrowserDemo(){
super("瀏覽器"); //調(diào)用父類構(gòu)造函數(shù)
jtfAddress=new JTextField(20); //實例化地址輸入框
jbGo=new JButton("轉(zhuǎn)到"); //實例化轉(zhuǎn)向按鈕
jtpShow=new JTextPane(); //實例化顯示內(nèi)容框
jlInfo=new JLabel(); //實例化信息提示標(biāo)簽
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()); //事件處理,發(fā)生按鈕點擊時顯示頁面內(nèi)容
jtfAddress.addActionListener(new ShowHTMLListener());
setSize(350,280); //設(shè)置窗口尺寸
setVisible(true); //設(shè)置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時退出程序
}
class ShowHTMLListener implements ActionListener { //顯示頁面內(nèi)容事件處理
public void actionPerformed(ActionEvent event) {
try{
jlInfo.setText("正在連接..."); //顯示提示信息
URL address=new URL(jtfAddress.getText()); //得到HTML頁面的URL地址
jtpShow.setPage(address); //設(shè)置顯示頁面
jlInfo.setText("完成");
}
catch (Exception ex){
jlInfo.setText("連接出錯");
ex.printStackTrace(); //輸出出錯信息
}
}
}
public static void main(String[] args){
new HTTPBrowserDemo();
}
}
⑺ 用Java代碼怎么在瀏覽器中顯示一個網(wǎng)頁
package .test;
import java.lang.reflect.Method;
//實現(xiàn)打開瀏覽器并跳到指定網(wǎng)址的類
public class BareBonesBrowserLaunch {
public static void openURL(String url) {
try {
browse(url);
} catch (Exception e) {
}
}
private static void browse(String url) throws Exception {
//獲取操作系統(tǒng)的名字
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 = 0; count browsers.length browser == null; count++)
//執(zhí)行代碼,在brower有值后跳出,
//這里是如果進(jìn)程創(chuàng)建成功了,==0是表示正常結(jié)束。
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
//這個值在上面已經(jīng)成功的得到了一個進(jìn)程。
Runtime.getRuntime().exec(new String[] { browser, url });
}
}
}
⑻ 如何用java編寫瀏覽器
正好我前幾天做了一來個自瀏覽器實例,挺容易的其實。就用到了:
1.awtswing編界面和響應(yīng)。
2.網(wǎng)頁顯示區(qū)域是用JEditPane來顯示的。通過在上方設(shè)置一個JTextField輸入url以后,這里獲得url,然后直接setPage到url就行了。也不是太難。
其他沒啥如果樓主要代碼的話留下郵箱。
樓主編瀏覽器大概需要以下知識:
1.javase基礎(chǔ)
2.協(xié)議大致傳輸過程
3.基礎(chǔ)的awtswing,以及窗口響應(yīng)布局等
4.淺顯的多線程知識
⑼ 超簡單的web瀏覽器用java實現(xiàn)
截圖:
進(jìn)入 //網(wǎng)頁:
訪問硬盤上的Html文件:file:盤符://文件名 (如果滿意就采納吧。。)
import java.awt.*;
import java.awt.event.*;
import java.URL;
import javax.swing.*;
public class HTTPBrowserDemo extends JFrame{
JTextField jtfAddress; //輸入文件地址或網(wǎng)址
JButton jbGo; //轉(zhuǎn)到文件按鈕
JTextPane jtpShow; //顯示文件
JLabel jlInfo; //提示信息
public HTTPBrowserDemo(){
super("瀏覽器"); //調(diào)用父類構(gòu)造函數(shù)
jtfAddress=new JTextField(20); //實例化地址輸入框
jbGo=new JButton("轉(zhuǎn)到"); //實例化轉(zhuǎn)向按鈕
jtpShow=new JTextPane(); //實例化顯示內(nèi)容框
jlInfo=new JLabel(); //實例化信息提示標(biāo)簽
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()); //事件處理,發(fā)生按鈕點擊時顯示頁面內(nèi)容
jtfAddress.addActionListener(new ShowHTMLListener());
setSize(350,280); //設(shè)置窗口尺寸
setVisible(true); //設(shè)置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關(guān)閉窗口時退出程序
}
class ShowHTMLListener implements ActionListener { //顯示頁面內(nèi)容事件處理
public void actionPerformed(ActionEvent event) {
try{
jlInfo.setText("正在連接..."); //顯示提示信息
URL address=new URL(jtfAddress.getText()); //得到HTML頁面的URL地址
jtpShow.setPage(address); //設(shè)置顯示頁面
jlInfo.setText("完成");
}
catch (Exception ex){
jlInfo.setText("連接出錯");
ex.printStackTrace(); //輸出出錯信息
}
}
}
public static void main(String[] args){
new HTTPBrowserDemo();
}
}
⑽ 怎樣用Java制作一個簡單瀏覽器
java制作瀏覽器的話,可以考慮使用android來制作一個,簡單實現(xiàn)加載網(wǎng)頁資源等等。
怎么用java來編寫網(wǎng)頁,目前比較流行的是SSH(純塌告struts2+spring+hibernate)框架。其實只要有servlet和JSP基礎(chǔ)就可以實現(xiàn),框架只是高效的開發(fā)和管理。
推薦使用SSH框架進(jìn)行開發(fā)。
使用struts2來實現(xiàn)頁面跳轉(zhuǎn),他的標(biāo)簽也可以寫JSP界面。
使用hibernate來進(jìn)行數(shù)據(jù)庫操作的封裝,進(jìn)行自動管理。
使用spring可以整合以上兩個,使控制權(quán)轉(zhuǎn)移給spring,這個就是控制反轉(zhuǎn)。
具體頁面怎么衫渣寫,這個多看下工具書不難。前臺做明頁面可以使用HTML來寫,解析速度快,并且頁面開發(fā)難度低,排版效果好。