DOS下编译可能会出问题,可以用命令 [ javac -Xlint:unchecked WebReader.java ],
如果不想出错请用eclipse进行编译。至于什么原因,下个文章解释;
对浏览器感兴趣的朋友,这是firefox各个版本的程序和源代码下载FTP地址
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
代码:
1
2// WebReader.java
3 // This program uses a JEditorPane to display the
4 // contents of a file on a Web server.
5
6 // Java core packages
7 import java.awt.*;
8 import java.awt.event.*;
9 import java.net.*;
10 import java.io.*;
11 import java.util.*;
12
13 // Java extension packages
14 import javax.swing.*;
15 import javax.swing.event.*;
16
17 public class WebReader extends JFrame {
18 private JTextField enterField;
19 private JEditorPane contentsArea;
20 private JButton backButton,fwdButton;
21 private JPanel contralPanel;
22 private URLList urllist;
23 // set up GUI
24 public WebReader()
25 {
26 super( "My Web Browser" );
27
28
29 JMenu fileMenu = new JMenu("File");//set up File menu ane its menu item
30 fileMenu.setMnemonic('F');
31
32 JMenuItem exitItem = new JMenuItem("Exit");
33 exitItem.setMnemonic('X');
34 exitItem.addActionListener(
35 new ActionListener(){
36 public void actionPerformed(ActionEvent event){
37 System.exit(0);
38 }
39 }
40 );
41 fileMenu.add( exitItem );
42
43 JMenuBar bar = new JMenuBar();
44 setJMenuBar( bar );
45 bar.add( fileMenu );
46
47 JMenu editMenu = new JMenu("Edit");
48 editMenu.setMnemonic('E');
49
50 JMenuItem nextItem = new JMenuItem( "Next" );
51 nextItem.setMnemonic( 'N' );
52 nextItem.addActionListener(
53 new ActionListener(){
54 public void actionPerformed(ActionEvent event){
55 System.exit(0);
56 }
57 }
58 );
59 editMenu.add( nextItem );
60 bar.add( editMenu );
61
62 Container container = getContentPane();
63
64 FlowLayout lay=new FlowLayout();
65 lay.setAlignment( FlowLayout.LEFT );
66
67 contralPanel = new JPanel();
68 contralPanel.setLayout( lay );
69
70 urllist = new URLList();
71
72 Icon back = new ImageIcon( "back.gif" );
73 backButton = new JButton( "back",back );
74 backButton.addActionListener(
75 new ActionListener()
76 {
77 public void actionPerformed( ActionEvent event )
78 {
79 String strback=new String( urllist.back() );
80 System.out.println( strback );
81 if( !strback.equals( "Noop" ) )
82 getThePage( strback );
83
84 }
85 }
86 );
87 contralPanel.add( backButton );
88
89 Icon fwd = new ImageIcon( "fwd.gif" );
90 fwdButton = new JButton( "fwd",fwd );
91 fwdButton.addActionListener(
92 new ActionListener()
93 {
94 public void actionPerformed( ActionEvent event )
95 {
96 String strfwd=new String( urllist.forward() );
97 System.out.println( strfwd );
98 if( !strfwd.equals( "Noop" ) )
99 getThePage( strfwd );
100
101 }
102 }
103 );
104 contralPanel.add( fwdButton );
105
106 // create enterField and register its listener
107 enterField = new JTextField( "Enter file URL here",24 );
108
109 enterField.addActionListener(
110
111 new ActionListener() {
112
113 // get document specified by user
114 public void actionPerformed( ActionEvent event )
115 {
116 urllist.push( event.getActionCommand() );
117 getThePage( event.getActionCommand() );
118 }
119
120 } // end anonymous inner class
121
122 ); // end call to addActionListener
123
124 enterField.addMouseListener(
125 new MouseListener(){
126 public void mouseClicked( MouseEvent e )
127 {
128 enterField.selectAll();
129 }
130
131 public void mousePressed( MouseEvent e )
132 {
133 }
134
135 public void mouseReleased( MouseEvent e )
136 {
137 }
138 public void mouseEntered( MouseEvent e )
139 {
140 }
141
142
143 public void mouseExited( MouseEvent e )
144 {
145 }
146 }
147 );
148
149 contralPanel.add( enterField );
150
151 container.add( contralPanel, BorderLayout.NORTH );
152 // create contentsArea and register HyperlinkEvent listener
153 contentsArea = new JEditorPane();
154 contentsArea.setEditable( false );
155
156 contentsArea.addHyperlinkListener(
157
158 new HyperlinkListener() {
159
160 // if user clicked hyperlink, go to specified page
161 public void hyperlinkUpdate( HyperlinkEvent event )
162 {
163 if ( event.getEventType() ==
164 HyperlinkEvent.EventType.ACTIVATED )
165 {
166 urllist.push( event.getURL().toString() );
167 getThePage( event.getURL().toString() );
168 }
169 }
170
171 } // end anonymous inner class
172
173 ); // end call to addHyperlinkListener
174
175 container.add( new JScrollPane( contentsArea ) ,
176 BorderLayout.CENTER );
177
178 setSize( 1000, 700 );
179 setVisible( true );
180 }
181
182 // load document; change mouse cursor to indicate status
183 private void getThePage( String location )
184 {
185 // change mouse cursor to WAIT_CURSOR
186 setCursor( Cursor.getPredefinedCursor(
187 Cursor.WAIT_CURSOR ) );
188
189 if(!location.startsWith( "http://" ))
190 location="http://" + location;
191
192 // load document into contentsArea and display location in
193 // enterField
194 try {
195 contentsArea.setPage( location );
196 enterField.setText( location );
197 }
198
199 // process problems loading document
200 catch ( IOException ioException ) {
201 JOptionPane.showMessageDialog( this,
202 "Error retrieving specified URL",
203 "Bad URL", JOptionPane.ERROR_MESSAGE );
204 }
205
206 setCursor( Cursor.getPredefinedCursor(
207 Cursor.DEFAULT_CURSOR ) );
208 }
209
210 // begin application execution
211 public static void main( String args[] )
212 {
213 WebReader application = new WebReader();
214
215 application.setDefaultCloseOperation(
216 JFrame.EXIT_ON_CLOSE );
217
218 }
219
220 } // end class WebReader
221 class URLList
222 {
223 private int now = 0;
224 private Vector vector;
225
226 URLList()
227 {
228 vector = new Vector( 1 );
229 }
230 public void push(String url)
231 {
232 vector.add(url);
233 now = vector.size()-1;
234 }
235
236 public String back()
237 {
238 System.out.println( "back " + now );
239 if( now == 0 )
240 return( "Noop" );
241 else
242 {
243 now--;
244 System.out.println( "back----" + now );
245 return( (String)vector.get( now ));
246 }
247 }
248
249 public String forward()
250 {
251 System.out.println( "fwd" + now + vector.size() );
252 if( ( vector.size() == 0 ) || ( now == ( vector.size()-1 ) ) )
253 return( "Noop" );
254 else
255 {
256 now++;
257 System.out.println( "fwd+++" + now );
258 return( (String)vector.get( now ));
259 }
260 }
261 public int getnow()
262 {
263 return now;
264 }
265 }
地震让大伙知道:居安思危,才是生存之道。
posted on 2007-03-09 08:22
小寻 阅读(778)
评论(0) 编辑 收藏 所属分类:
j2se/j2ee/j2me