参考《java课程设计—案例精编》清华大学出版社
1.WebBrowser.java主类
1
2
import java.io.BufferedInputStream;
3
import java.io.BufferedReader;
4
import java.io.BufferedWriter;
5
import java.io.File;
6
import java.io.FileWriter;
7
import java.io.IOException;
8
import java.io.InputStream;
9
import java.io.InputStreamReader;
10
import java.net.URL;
11
import java.util.ArrayList;
12
import java.util.logging.Level;
13
import java.util.logging.Logger;
14
import javax.swing.JFileChooser;
15
import javax.swing.JFrame;
16
import javax.swing.JOptionPane;
17
18
/**//*
19
* WebBrowser.java
20
*
21
* Created on 2008年4月12日, 下午3:47
22
*/
23
import javax.swing.event.HyperlinkEvent;
24
25
26
27
/** *//**
28
*
29
* @author wangliang
30
*/
31
public class WebBrowser extends javax.swing.JFrame
{
32
private ArrayList history;
33
private int historyIndex;
34
String htmlSource;
35
36
37
/** *//** Creates new form WebBrowser */
38
public WebBrowser()
{
39
setTitle("网页浏览器");
40
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
41
initComponents();
42
history=new ArrayList();
43
htmlSource="";
44
45
}
46
47
/** *//** This method is called from within the constructor to
48
* initialize the form.
49
* WARNING: Do NOT modify this code. The content of this method is
50
* always regenerated by the Form Editor.
51
*/
52
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
53
private void initComponents()
{
54
55
jToolBar1 = new javax.swing.JToolBar();
56
jButton1 = new javax.swing.JButton();
57
jButton2 = new javax.swing.JButton();
58
jButton3 = new javax.swing.JButton();
59
jButton4 = new javax.swing.JButton();
60
jButton5 = new javax.swing.JButton();
61
jLabel1 = new javax.swing.JLabel();
62
jTextField1 = new javax.swing.JTextField();
63
jButton6 = new javax.swing.JButton();
64
jScrollPane1 = new javax.swing.JScrollPane();
65
jEditorPane1 = new javax.swing.JEditorPane();
66
jMenuBar1 = new javax.swing.JMenuBar();
67
jMenu1 = new javax.swing.JMenu();
68
jMenuItem1 = new javax.swing.JMenuItem();
69
jMenuItem7 = new javax.swing.JMenuItem();
70
jMenu2 = new javax.swing.JMenu();
71
jMenuItem2 = new javax.swing.JMenuItem();
72
jMenuItem3 = new javax.swing.JMenuItem();
73
jMenu3 = new javax.swing.JMenu();
74
jMenuItem5 = new javax.swing.JMenuItem();
75
jMenuItem6 = new javax.swing.JMenuItem();
76
77
jToolBar1.setRollover(true);
78
79
jButton1.setText("另存为");
80
jButton1.setFocusable(false);
81
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
82
jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
83
jButton1.addActionListener(new java.awt.event.ActionListener()
{
84
public void actionPerformed(java.awt.event.ActionEvent evt)
{
85
jButton1ActionPerformed(evt);
86
}
87
});
88
jToolBar1.add(jButton1);
89
90
jButton2.setText("后退");
91
jButton2.setFocusable(false);
92
jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
93
jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
94
jButton2.addActionListener(new java.awt.event.ActionListener()
{
95
public void actionPerformed(java.awt.event.ActionEvent evt)
{
96
jButton2ActionPerformed(evt);
97
}
98
});
99
jToolBar1.add(jButton2);
100
101
jButton3.setText("前进");
102
jButton3.setFocusable(false);
103
jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
104
jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
105
jButton3.addActionListener(new java.awt.event.ActionListener()
{
106
public void actionPerformed(java.awt.event.ActionEvent evt)
{
107
jButton3ActionPerformed(evt);
108
}
109
});
110
jToolBar1.add(jButton3);
111
112
jButton4.setText("查看源代码");
113
jButton4.setFocusable(false);
114
jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
115
jButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
116
jButton4.addActionListener(new java.awt.event.ActionListener()
{
117
public void actionPerformed(java.awt.event.ActionEvent evt)
{
118
jButton4ActionPerformed(evt);
119
}
120
});
121
jToolBar1.add(jButton4);
122
123
jButton5.setText("退出");
124
jButton5.setFocusable(false);
125
jButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
126
jButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
127
jButton5.addActionListener(new java.awt.event.ActionListener()
{
128
public void actionPerformed(java.awt.event.ActionEvent evt)
{
129
jButton5ActionPerformed(evt);
130
}
131
});
132
jToolBar1.add(jButton5);
133
134
jLabel1.setText("地址");
135
136
jTextField1.addActionListener(new java.awt.event.ActionListener()
{
137
public void actionPerformed(java.awt.event.ActionEvent evt)
{
138
jTextField1ActionPerformed(evt);
139
}
140
});
141
142
jButton6.setText("转到");
143
jButton6.addActionListener(new java.awt.event.ActionListener()
{
144
public void actionPerformed(java.awt.event.ActionEvent evt)
{
145
jButton6ActionPerformed(evt);
146
}
147
});
148
149
jEditorPane1.addHyperlinkListener(new javax.swing.event.HyperlinkListener()
{
150
public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt)
{
151
jEditorPane1HyperlinkUpdate(evt);
152
}
153
});
154
jScrollPane1.setViewportView(jEditorPane1);
155
156
jMenu1.setText("文件(F)");
157
jMenu1.addActionListener(new java.awt.event.ActionListener()
{
158
public void actionPerformed(java.awt.event.ActionEvent evt)
{
159
jMenu1ActionPerformed(evt);
160
}
161
});
162
163
jMenuItem1.setText("另存为");
164
jMenuItem1.addActionListener(new java.awt.event.ActionListener()
{
165
public void actionPerformed(java.awt.event.ActionEvent evt)
{
166
jMenuItem1ActionPerformed(evt);
167
}
168
});
169
jMenu1.add(jMenuItem1);
170
171
jMenuItem7.setText("退出");
172
jMenuItem7.addActionListener(new java.awt.event.ActionListener()
{
173
public void actionPerformed(java.awt.event.ActionEvent evt)
{
174
jMenuItem7ActionPerformed(evt);
175
}
176
});
177
jMenu1.add(jMenuItem7);
178
179
jMenuBar1.add(jMenu1);
180
181
jMenu2.setText("编辑(E)");
182
183
jMenuItem2.setText("后退");
184
jMenuItem2.addActionListener(new java.awt.event.ActionListener()
{
185
public void actionPerformed(java.awt.event.ActionEvent evt)
{
186
jMenuItem2ActionPerformed(evt);
187
}
188
});
189
jMenu2.add(jMenuItem2);
190
191
jMenuItem3.setText("前进");
192
jMenuItem3.addActionListener(new java.awt.event.ActionListener()
{
193
public void actionPerformed(java.awt.event.ActionEvent evt)
{
194
jMenuItem3ActionPerformed(evt);
195
}
196
});
197
jMenu2.add(jMenuItem3);
198
199
jMenuBar1.add(jMenu2);
200
201
jMenu3.setText("视图(V)");
202
203
jMenuItem5.setText("查看源码");
204
jMenuItem5.addActionListener(new java.awt.event.ActionListener()
{
205
public void actionPerformed(java.awt.event.ActionEvent evt)
{
206
jMenuItem5ActionPerformed(evt);
207
}
208
});
209
jMenu3.add(jMenuItem5);
210
211
jMenuItem6.setText("刷新");
212
jMenuItem6.addActionListener(new java.awt.event.ActionListener()
{
213
public void actionPerformed(java.awt.event.ActionEvent evt)
{
214
jMenuItem6ActionPerformed(evt);
215
}
216
});
217
jMenu3.add(jMenuItem6);
218
219
jMenuBar1.add(jMenu3);
220
221
setJMenuBar(jMenuBar1);
222
223
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
224
getContentPane().setLayout(layout);
225
layout.setHorizontalGroup(
226
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
227
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 685, Short.MAX_VALUE)
228
.addGroup(layout.createSequentialGroup()
229
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
230
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
231
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 537, javax.swing.GroupLayout.PREFERRED_SIZE)
232
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
233
.addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
234
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
235
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 685, Short.MAX_VALUE)
236
);
237
layout.setVerticalGroup(
238
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
239
.addGroup(layout.createSequentialGroup()
240
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
241
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
242
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
243
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
244
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
245
.addComponent(jButton6))
246
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
247
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
248
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
249
);
250
251
pack();
252
}// </editor-fold>//GEN-END:initComponents
253
254
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem1ActionPerformed
255
String url=jTextField1.getText();
256
if(url.length()>0&&!url.startsWith("http://"))
{
257
url="http://"+url;
258
}
259
if(!url.equals(""))
{
260
saveFile(url);
261
}
262
else
{
263
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
264
}
265
}//GEN-LAST:event_jMenuItem1ActionPerformed
266
267
private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenu1ActionPerformed
268
// TODO add your handling code here:
269
}//GEN-LAST:event_jMenu1ActionPerformed
270
271
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem7ActionPerformed
272
System.exit(0);
273
}//GEN-LAST:event_jMenuItem7ActionPerformed
274
275
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem2ActionPerformed
276
historyIndex--;
277
if(historyIndex<0)
{
278
historyIndex=0;
279
}
280
String url=jTextField1.getText();
281
try
{
282
url=(String)history.get(historyIndex);
283
jEditorPane1.setPage(url);
284
jTextField1.setText(url.toString());
285
jEditorPane1.revalidate();
286
}
287
catch(Exception ex)
{
288
289
}
290
}//GEN-LAST:event_jMenuItem2ActionPerformed
291
292
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem3ActionPerformed
293
historyIndex++;
294
if(historyIndex>=history.size())
{
295
historyIndex=history.size()-1;
296
}
297
String url=jTextField1.getText();
298
try
{
299
url=(String)history.get(historyIndex);
300
jEditorPane1.setPage(url);
301
jTextField1.setText(url.toString());
302
jEditorPane1.revalidate();
303
}
304
catch(Exception ex)
{
305
306
}
307
}//GEN-LAST:event_jMenuItem3ActionPerformed
308
309
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem5ActionPerformed
310
// TODO add your handling code here:
311
String url="";
312
url=jTextField1.getText().trim();
313
if(url.length()>0&&!url.startsWith("http://"))
{
314
url="http://"+url;
315
}
316
if(url!="")
{
317
getHtmlSource(url);
318
ViewSourceFrame vsframe=new ViewSourceFrame(htmlSource);
319
vsframe.setBounds(0, 0, 800, 500);
320
vsframe.setVisible(true);
321
}
322
else
{
323
JOptionPane.showMessageDialog(WebBrowser.this, "请输入网址","网页浏览器",JOptionPane.ERROR_MESSAGE);
324
}
325
}//GEN-LAST:event_jMenuItem5ActionPerformed
326
327
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jMenuItem6ActionPerformed
328
// TODO add your handling code here:
329
String url="";
330
url=jTextField1.getText().trim();
331
if(url.length()>0&&!url.startsWith("http://"))
{
332
url="http://"+url;
333
}
334
if(url!="")
{
335
try
{
336
jEditorPane1.setPage(url);
337
jEditorPane1.setEditable(false);
338
jEditorPane1.revalidate();
339
} catch (IOException ex)
{
340
Logger.getLogger(WebBrowser.class.getName()).log(Level.SEVERE, null, ex);
341
}
342
343
}
344
}//GEN-LAST:event_jMenuItem6ActionPerformed
345
346
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton1ActionPerformed
347
String url=jTextField1.getText();
348
if(url.length()>0&&!url.startsWith("http://"))
{
349
url="http://"+url;
350
}
351
if(!url.equals(""))
{
352
saveFile(url);
353
}
354
else
{
355
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
356
}
357
358
}//GEN-LAST:event_jButton1ActionPerformed
359
360
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton2ActionPerformed
361
historyIndex--;
362
if(historyIndex<0)
{
363
historyIndex=0;
364
}
365
String url=jTextField1.getText();
366
try
{
367
url=(String)history.get(historyIndex);
368
jEditorPane1.setPage(url);
369
jTextField1.setText(url.toString());
370
jEditorPane1.revalidate();
371
}
372
catch(Exception ex)
{
373
374
}
375
}//GEN-LAST:event_jButton2ActionPerformed
376
377
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton3ActionPerformed
378
historyIndex++;
379
if(historyIndex>=history.size())
{
380
historyIndex=history.size()-1;
381
}
382
String url=jTextField1.getText();
383
try
{
384
url=(String)history.get(historyIndex);
385
jEditorPane1.setPage(url);
386
jTextField1.setText(url.toString());
387
jEditorPane1.revalidate();
388
}
389
catch(Exception ex)
{
390
391
}
392
}//GEN-LAST:event_jButton3ActionPerformed
393
394
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton4ActionPerformed
395
// TODO add your handling code here:
396
String url="";
397
url=jTextField1.getText().trim();
398
if(url.length()>0&&!url.startsWith("http://"))
{
399
url="http://"+url;
400
}
401
if(url!="")
{
402
getHtmlSource(url);
403
ViewSourceFrame vsframe=new ViewSourceFrame(htmlSource);
404
vsframe.setBounds(0, 0, 800, 500);
405
vsframe.setVisible(true);
406
}
407
else
{
408
JOptionPane.showMessageDialog(WebBrowser.this, "请输入网址","网页浏览器",JOptionPane.ERROR_MESSAGE);
409
}
410
}//GEN-LAST:event_jButton4ActionPerformed
411
412
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton5ActionPerformed
413
System.exit(0);
414
}//GEN-LAST:event_jButton5ActionPerformed
415
416
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jTextField1ActionPerformed
417
String url="";
418
url=jTextField1.getText().trim();
419
if(url.length()>0&&url.startsWith("http://"))
{
420
try
{
421
jEditorPane1.setPage(url);
422
history.add(url);
423
historyIndex=history.size()-1;
424
jEditorPane1.setEditable(false);
425
jEditorPane1.revalidate();
426
}
427
catch(Exception ex)
{
428
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
429
}
430
}
431
else if(url.length()>0&&!url.startsWith("http://"))
{
432
url="http://"+url;
433
try
{
434
jEditorPane1.setPage(url);
435
history.add(url);
436
historyIndex=history.size()-1;
437
jEditorPane1.setEditable(false);
438
jEditorPane1.revalidate();
439
}
440
catch(Exception ex)
{
441
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
442
}
443
}
444
else
{
445
JOptionPane.showMessageDialog(WebBrowser.this, "请输入网址","网页浏览器",JOptionPane.ERROR_MESSAGE);
446
}
447
448
}//GEN-LAST:event_jTextField1ActionPerformed
449
450
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton6ActionPerformed
451
String url="";
452
url=jTextField1.getText();
453
if(url.length()>0&&url.startsWith("http://"))
{
454
455
try
{
456
jEditorPane1.setPage(url);
457
history.add(url);
458
historyIndex=history.size()-1;
459
jEditorPane1.setEditable(false);
460
jEditorPane1.revalidate();
461
}
462
catch(Exception ex)
{
463
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
464
}
465
}
466
else if(url.length()>0&&!url.startsWith("http://"))
{
467
url="http://"+url;
468
try
{
469
jEditorPane1.setPage(url);
470
history.add(url);
471
historyIndex=history.size()-1;
472
jEditorPane1.setEditable(false);
473
jEditorPane1.revalidate();
474
}
475
catch(Exception ex)
{
476
JOptionPane.showMessageDialog(WebBrowser.this, "无法打开该搜索网页","网页浏览器",JOptionPane.ERROR_MESSAGE);
477
}
478
}
479
else
{
480
JOptionPane.showMessageDialog(WebBrowser.this, "请输入网址","网页浏览器",JOptionPane.ERROR_MESSAGE);
481
}
482
}//GEN-LAST:event_jButton6ActionPerformed
483
484
private void jEditorPane1HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt)
{//GEN-FIRST:event_jEditorPane1HyperlinkUpdate
485
try
{
486
487
if(evt.getEventType()==HyperlinkEvent.EventType.ACTIVATED)
{
488
String url=evt.getURL().toString();
489
jEditorPane1.setPage(url);
490
jTextField1.setText(url);
491
history.add(url);
492
historyIndex=history.size()-1;
493
jEditorPane1.setEditable(false);
494
jEditorPane1.revalidate();
495
496
}
497
498
} catch (IOException ex)
{
499
Logger.getLogger(WebBrowser.class.getName()).log(Level.SEVERE, null, ex);
500
}
501
502
}//GEN-LAST:event_jEditorPane1HyperlinkUpdate
503
504
void getHtmlSource(String url)
{
505
String linesep,htmlLine;
506
linesep=System.getProperty("line.separator");
507
try
{
508
URL source=new URL(url);
509
InputStream in=new BufferedInputStream(source.openStream());
510
BufferedReader br=new BufferedReader(new InputStreamReader(in));
511
while((htmlLine=br.readLine())!=null)
{
512
htmlSource=htmlSource+htmlLine+linesep;
513
}
514
}
515
catch(java.net.MalformedURLException muex)
{
516
JOptionPane.showMessageDialog(WebBrowser.this, muex.toString(),"网页浏览器",JOptionPane.INFORMATION_MESSAGE);
517
}
518
catch(Exception ex)
{
519
JOptionPane.showMessageDialog(WebBrowser.this, ex.toString(),"网页浏览器",JOptionPane.INFORMATION_MESSAGE);
520
}
521
}
522
523
void saveFile(final String url)
{
524
final String linesep=System.getProperty("line.separator");
525
final JFileChooser chooser=new JFileChooser();
526
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
527
chooser.setDialogTitle("另存为");
528
if(chooser.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION)
529
return;
530
this.repaint();
531
Thread thread=new Thread()
{
532
public void run()
{
533
try
{
534
java.net.URL source=new URL(url);
535
InputStream in=new BufferedInputStream(source.openStream());
536
BufferedReader br=new BufferedReader(new InputStreamReader(in));
537
File fileName=chooser.getSelectedFile();
538
FileWriter out=new FileWriter(fileName);
539
BufferedWriter bw=new BufferedWriter(out);
540
String line;
541
while((line=br.readLine())!=null)
{
542
bw.write(line);
543
bw.newLine();
544
}
545
bw.flush();
546
bw.close();
547
String dMessage=url+"已经被保存"+linesep+fileName.getAbsolutePath();
548
String dTitle="另存为";
549
JOptionPane.showMessageDialog(WebBrowser.this, dMessage,dTitle,JOptionPane.INFORMATION_MESSAGE);
550
}
551
catch(java.net.MalformedURLException muex)
{
552
JOptionPane.showMessageDialog(WebBrowser.this, muex.toString(),"网页浏览器",JOptionPane.INFORMATION_MESSAGE);
553
}
554
catch(Exception ex)
{
555
JOptionPane.showMessageDialog(WebBrowser.this, ex.toString(),"网页浏览器",JOptionPane.INFORMATION_MESSAGE);
556
}
557
}
558
559
};
560
thread.start();
561
}
562
563
564
/** *//**
565
* @param args the command line arguments
566
*/
567
public static void main(String args[])
{
568
java.awt.EventQueue.invokeLater(new Runnable()
{
569
public void run()
{
570
new WebBrowser().setVisible(true);
571
}
572
});
573
}
574
575
// Variables declaration - do not modify//GEN-BEGIN:variables
576
private javax.swing.JButton jButton1;
577
private javax.swing.JButton jButton2;
578
private javax.swing.JButton jButton3;
579
private javax.swing.JButton jButton4;
580
private javax.swing.JButton jButton5;
581
private javax.swing.JButton jButton6;
582
private javax.swing.JEditorPane jEditorPane1;
583
private javax.swing.JLabel jLabel1;
584
private javax.swing.JMenu jMenu1;
585
private javax.swing.JMenu jMenu2;
586
private javax.swing.JMenu jMenu3;
587
private javax.swing.JMenuBar jMenuBar1;
588
private javax.swing.JMenuItem jMenuItem1;
589
private javax.swing.JMenuItem jMenuItem2;
590
private javax.swing.JMenuItem jMenuItem3;
591
private javax.swing.JMenuItem jMenuItem5;
592
private javax.swing.JMenuItem jMenuItem6;
593
private javax.swing.JMenuItem jMenuItem7;
594
private javax.swing.JScrollPane jScrollPane1;
595
private javax.swing.JTextField jTextField1;
596
private javax.swing.JToolBar jToolBar1;
597
// End of variables declaration//GEN-END:variables
598
599
}
600
2.ViewSourceFrame.java显示源代码

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;


/**//*
* ViewSourceFrame.java
*
* Created on 2008年4月12日, 下午10:25
*/
import javax.swing.JOptionPane;




/** *//**
*
* @author wangliang
*/

public class ViewSourceFrame extends javax.swing.JFrame
{
String htmlSource;

/** *//** Creates new form ViewSourceFrame */

public ViewSourceFrame(String htmlSource)
{
setTitle("源代码");
this.htmlSource=htmlSource;
initComponents();
jTextArea1.setEditable(true);
jTextArea1.setText(htmlSource);
jTextArea1.setCaretPosition(0);
}

/** *//** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents

private void initComponents()
{

jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);

jButton1.setText("保存");

jButton1.addActionListener(new java.awt.event.ActionListener()
{

public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton1ActionPerformed(evt);
}
});

jButton2.setText("退出");

jButton2.addActionListener(new java.awt.event.ActionListener()
{

public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButton2ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 713, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(265, 265, 265)
.addComponent(jButton1)
.addGap(58, 58, 58)
.addComponent(jButton2)
.addContainerGap(272, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 421, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton1)))
);

pack();
}// </editor-fold>//GEN-END:initComponents


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton2ActionPerformed
dispose();
}//GEN-LAST:event_jButton2ActionPerformed


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_jButton1ActionPerformed
JFileChooser fc=new JFileChooser();
int returnVal=fc.showSaveDialog(ViewSourceFrame.this);
if(fc.showSaveDialog(this)!=JFileChooser.APPROVE_OPTION)
return;
File saveFile=fc.getSelectedFile();

try
{
FileWriter writeOut=new FileWriter(saveFile);
writeOut.write(jTextArea1.getText());
writeOut.close();
}

catch(IOException ex)
{
JOptionPane.showMessageDialog(this, ex.toString(),"网页代码",JOptionPane.INFORMATION_MESSAGE);
}
}//GEN-LAST:event_jButton1ActionPerformed

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration//GEN-END:variables
}

可运行的jar文件
/Files/littlefermat/webBrowser.rar