首页 > 编程语言 > 详细

Java基础:多功能小窗口,swing,io,net综合应用

时间:2015-07-26 00:26:44      阅读:287      评论:0      收藏:0      [点我收藏+]

概念原理的理解,不代表能熟练应用。

如果将多个知识点关联并应用起来,这能加快我们对知识的掌握。

作为一个初学者,最快速的上手方式应该就是学以致用了。

下面做了一个小窗口,主要是为了综合应用java的一些基础功能,界面稍显随意。

界面:

技术分享

 

具体功能以及代码:

  1 /*具体实现功能:
  2  * 1.根据地址栏的路径打开文本文件,显示在文本区域。
  3  * 2.根据地址栏的网址获取网页源代码,显示在文本区域。
  4  * 3.通过打开按钮打开本地文本文件,显示在文本区域。
  5  * 4.通过保存按钮,把文本区域内容保存到本地。
  6  * 
  7  * 应用到的知识点:
  8  * 1.GUI;
  9  * 2.IO;
 10  * 3.net;*/
 11 
 12 import java.awt.FlowLayout;
 13 import java.awt.event.ActionEvent;
 14 import java.awt.event.ActionListener;
 15 import java.awt.event.FocusAdapter;
 16 import java.awt.event.FocusEvent;
 17 import java.awt.event.KeyAdapter;
 18 import java.awt.event.KeyEvent;
 19 import java.awt.event.WindowAdapter;
 20 import java.awt.event.WindowEvent;
 21 import java.io.BufferedReader;
 22 import java.io.BufferedWriter;
 23 import java.io.File;
 24 import java.io.FileNotFoundException;
 25 import java.io.FileReader;
 26 import java.io.FileWriter;
 27 import java.io.IOException;
 28 import java.io.InputStreamReader;
 29 import java.net.MalformedURLException;
 30 import java.net.URL;
 31 import java.net.URLConnection;
 32 
 33 import javax.swing.JButton;
 34 import javax.swing.JDialog;
 35 import javax.swing.JFileChooser;
 36 import javax.swing.JFrame;
 37 import javax.swing.JLabel;
 38 import javax.swing.JScrollPane;
 39 import javax.swing.JTextArea;
 40 import javax.swing.JTextField;
 41 import javax.swing.filechooser.FileFilter;
 42 import javax.swing.filechooser.FileNameExtensionFilter;
 43 import javax.swing.text.BadLocationException;
 44 
 45 public class GUITest {
 46 
 47     public static void main(String[] args) {
 48         new GetGUI();
 49 
 50     }
 51 
 52 }
 53 
 54 //GUI界面设置。
 55 class GetGUI{
 56     JFrame f;
 57     JTextField tf;
 58     JButton but;
 59     JButton but1;
 60     JButton but2;
 61     JTextArea ta;
 62     JScrollPane scroll;
 63     
 64     JFileChooser JFC;
 65     JDialog dia;
 66     JLabel lab;
 67     JButton okBut;
 68     GetGUI(){
 69         f = new JFrame("多功能小窗口");
 70         tf = new JTextField("填写本地文本路径或网址(确认后请稍候...)",45);
 71         but = new JButton("转到");
 72         but2 = new JButton("打开");
 73         but1 = new JButton("保存");
 74         ta = new JTextArea(23,50);
 75         JFC = new JFileChooser();
 76 //        设置选择可选文件夹和文件。
 77         JFC.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
 78 //        设置可选文件后缀名(过滤器)。
 79         FileFilter filter = new FileNameExtensionFilter(".txt","txt");
 80         FileFilter filter1 = new FileNameExtensionFilter(".java","java");
 81         JFC.setFileFilter(filter);
 82         JFC.setFileFilter(filter1);
 83         
 84         dia = new JDialog(f,true);
 85         lab = new JLabel();
 86         okBut = new JButton("ok");
 87         
 88         dia.add(lab);
 89         dia.add(okBut);
 90         dia.setBounds(350,150,500,100);
 91         dia.setLayout(new FlowLayout());
 92 
 93 //        文本区域设置滚动条。
 94         scroll = new JScrollPane(ta);
 95         scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 96         scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
 97         
 98         f.add(tf);
 99         f.add(but);
100         f.add(but2);
101         f.add(but1);
102         f.add(scroll);
103         f.setBounds(300,100,600,550);
104         f.setLayout(new FlowLayout());
105         f.setResizable(false);
106         setGUI();
107         
108         f.setVisible(true);
109     }
110     private void setGUI() {
111         okBut.addActionListener(new ActionListener() {
112             
113             @Override
114             public void actionPerformed(ActionEvent e) {
115                 dia.setVisible(false);
116             }
117         });
118         
119         dia.addWindowListener(new WindowAdapter() {
120             public void windowClosing(WindowEvent e){
121                 dia.setVisible(false);
122             }
123         });
124 
125 //        通过地址栏上回车键打开本地文件或网站的html源代码。
126         tf.addKeyListener(new KeyAdapter() {
127             public void keyPressed(KeyEvent e){
128                 if (e.getKeyCode()==KeyEvent.VK_ENTER) {
129                     showContent();
130                 }
131             }
132         });
133         
134         tf.addFocusListener(new FocusAdapter() {
135             public void focusGained(FocusEvent e){
136                 tf.setText(null);
137             }
138         });
139         
140 //        通过“转到”按钮打开本地文本文件或网站的html源代码。
141         but.addActionListener(new ActionListener() {
142             public void actionPerformed(ActionEvent e) {
143                 showContent();
144             }
145         });
146 
147 //        通过“打开”按钮打开本地文本文件。
148         but2.addActionListener(new ActionListener() {
149             
150             @Override
151             public void actionPerformed(ActionEvent e) {
152                 BufferedReader bufr = null;
153                 int x = JFC.showOpenDialog(f);
154                 try {
155                     if (x==JFileChooser.APPROVE_OPTION) {                        
156                         ta.setText(null);
157                         tf.setText(null);
158                         File fi2 = JFC.getSelectedFile();
159                         bufr = new BufferedReader(new FileReader(fi2));
160                         String line =null;
161                         tf.setText(fi2.getAbsolutePath());
162                         while ((line=bufr.readLine())!=null) {
163                             ta.append(line+"\r\n");
164                         }
165                     }
166                 } catch (FileNotFoundException e1) {
167                     lab.setText("找不到文件");
168                     dia.setVisible(true);    
169                 } catch (IOException e1) {
170                     lab.setText("读取失败");
171                     dia.setVisible(true);    
172                 }
173             }
174         });
175         
176 //        通过“保存”按钮保存文件。
177         but1.addActionListener(new ActionListener() {
178             String address;
179             @Override
180             public void actionPerformed(ActionEvent e) {
181 //                弹出一个保存对话框,并返回int类型的值。
182                 int x = JFC.showSaveDialog(f);
183                 File fi = JFC.getSelectedFile();
184 //                利用返回的int值判断是否点击了对话框的保存按键
185                 if (x==JFileChooser.APPROVE_OPTION && fi!=null) {
186                     address = fi.getAbsolutePath();
187                     String ends = JFC.getFileFilter().getDescription();
188                     if (address.toUpperCase().endsWith(ends.toUpperCase())) {
189 //                        如果文件使用的扩展名符合选定扩展名,则原名保存。
190                         write2file();                    
191                     } else {
192 //                        如果不是选定扩展名,则要加上选定扩展名
193                         address = address+ends;
194                         write2file();                                
195                     }                    
196                 } 
197             }
198 
199 //            保存文件的具体实现方法。
200             private void write2file() {
201                 BufferedWriter bufw = null;
202                 try {
203                     bufw = new BufferedWriter(new FileWriter(address));
204                     int count = ta.getLineCount();
205                     for (int x = 0; x < count; x++) {
206 //                        获取行数,再通过行首位的偏移量获取每行内容。
207                         String text = ta.getText(ta.getLineStartOffset(x),ta.getLineEndOffset(x)-ta.getLineStartOffset(x));
208                         bufw.write(text);
209                         bufw.flush();                        
210                     }
211                 } catch (BadLocationException e1) {
212                     lab.setText("行数错误");
213                     dia.setVisible(true);    
214                 } catch (IOException e2) {
215                     lab.setText("保存失败");
216                     dia.setVisible(true);    
217                 } finally {
218                     try {
219                         bufw.close();
220                     } catch (IOException e1) {
221                         lab.setText("关闭资源失败");
222                         dia.setVisible(true);    
223                     }
224                 }        
225             }
226         });
227                 
228         f.addWindowListener(new WindowAdapter() {
229             public void windowClosing(WindowEvent e){
230                 System.exit(0);
231             }
232             public void windowActivated(WindowEvent e1){
233 //                设置窗口激活状态的焦点。
234                 but.requestFocus();
235             }
236         });
237     }
238 
239 //    打开本地文本文件和网址html源代码的具体实现方法。
240     private  void showContent() {
241         BufferedReader bufr = null;
242         try {
243             File file = new File(tf.getText());
244             if (file!=null && file.isFile()) {
245                 ta.setText(null);
246                 bufr = new BufferedReader(new FileReader(file));
247                 String line = null;
248                 while ((line=bufr.readLine())!=null) {
249                     ta.append(line+"\r\n");    
250                 }
251             }
252             else if (file!=null) {
253                 URL url = new URL(tf.getText());
254                 if (null!=url.openStream()) {
255                     ta.setText(null);
256                     URLConnection conn = url.openConnection();
257                     bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
258                     String line = null;
259                     while ((line=bufr.readLine())!=null) {
260                         ta.append(line+"\r\n");    
261                     }
262                     bufr.close();                    
263                 }else {
264                     lab.setText("输入网址文件不存在,请重新输入");
265                     dia.setVisible(true);    
266                 }
267             }
268         } catch (FileNotFoundException e) {
269             lab.setText("输入文件路径不存在,请重新输入");
270             dia.setVisible(true);
271         } catch (MalformedURLException e) {
272             lab.setText("输入网址或路径不正确,请重新输入");
273             dia.setVisible(true);
274         } catch (IOException e) {
275             ta.append(e.toString());
276             lab.setText("读取文件失败,请重新输入");
277             dia.setVisible(true);
278         }
279         finally {
280             if (bufr!=null) {
281                 try {
282                     bufr.close();
283                 } catch (Exception e2) {
284                     lab.setText("关闭资源失败");
285                     dia.setVisible(true);
286                 }
287             }
288         }        
289     }    
290 } 


虽然略显粗糙,但是功能都做出来了,活学活用,希望在java的路上继续前进,go!

 

Java基础:多功能小窗口,swing,io,net综合应用

原文:http://www.cnblogs.com/challengingtime/p/4676870.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!