一个简单的java窗体小程序(完整代码).docx
大神请绕道首先,这只是一个很简单的程序,所以大神请绕道。心血来潮,用java编写了一个能访问http链接,并能下载文件的窗体小程序。实测能够正确下载17M的压缩包,图片,文档,html等。但是因为程序效率低下,于是没有继续测试更大的压缩文件(问题可能在于保存输入流到缓冲区的数组)。程序已打包jar可执行文件,并将代码一齐打包到jar中。为方便使用jar,使用word文档对象包装了它,将下面的对象(显示为一个图标)拖到桌面或者其他文件夹,即可得到该程序java下载小程序.jar也可以右击,激活内容,直接运行。程序运行效果如图该测试链接来自pc6,下载结果为大神请绕道文件顺利打开。程序主要使用了url访问http地址,并获取输入流,创建本地文件,输出读取的数据到本地文件中。其他部分则是窗体。以下是全部代码同样是word对象,直接拖到桌面即可。显示窗体的ui包DownloadWin.javaMainWin.java分割字符串的util包SplitString.java监听事件的listener包DownloadListener.java大神请绕道其中,ui包MainWin.javapackage下载.ui;publicclassMainWin{publicstaticvoidmainString[]args{DownloadWinwinnewDownloadWin下载;}}DownloadWin.javapackage下载.ui;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjavax.swing.Box;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;import下载.listener.DownloadListener;publicclassDownloadWinextendsJFrame{/****/privatestaticfinallongserialVersionUID-7226361346020458023L;privateJTextFieldhttpLine;privateJTextFieldsavePath;privateJButtonbtnDownload;privateJLabellineLabel;privateJLabelsaveLabel;privatestaticJLabelinfoLabel;publicDownloadWinStringtitle{init;大神请绕道setTitletitle;setSize400,300;setLayoutnewGridLayout2,1,0,0;//为美观考虑,第二行没有使用。setLocationRelativeTonull;setDefaultCloseOperationJFrame.EXIT_ON_CLOSE;setVisibletrue;}privatevoidinit{BoxbaseBoxBox.createVerticalBox;BoxboxV1Box.createHorizontalBox;BoxboxV2Box.createHorizontalBox;BoxboxV3Box.createHorizontalBox;BoxboxV4Box.createHorizontalBox;BoxboxV5Box.createHorizontalBox;lineLabelnewJLabel访问地址;httpLinenewJTextField;saveLabelnewJLabel保存路径;savePathnewJTextField;btnDownloadnewJButton下载;infoLabelnewJLabel;/***监听器*/DownloadListenerlistenernewDownloadListenerhttpLine,savePath,infoLabel;//将需要改变显示状态的控件传递过去处理btnDownload.addActionListenerlistener;boxV1.addlineLabel;boxV1.addhttpLine;boxV2.addsaveLabel;boxV2.addsavePath;boxV3.addbtnDownload;boxV4.addinfoLabel;baseBox.addboxV1;Box.createVerticalStrut15;baseBox.addboxV2;Box.createVerticalStrut15;baseBox.addboxV3;Box.createVerticalStrut15;baseBox.addboxV4;大神请绕道Box.createVerticalStrut15;baseBox.addboxV5;addbaseBox;}}Util包SplitString.javapackage下载.util;publicclassSplitString{privateStringsplitstr;publicSplitString{//TODO自动生成的构造函数存根}/***paramhttpAddress**paramaccordingString*return返回“/”之后最后一个字符串*/publicStringsplitStringsplitString,StringaccordingString{//httpAddress.endsWith/;//如果a/c/则返回的字符串是c//String[]strhttpAddress.split/;//unhappy.substring2returnshappy//a.s.k.httpAddress.lastIndexOf.returns3//splitstrstr[str.length-1];//获取“/”之后最后一个字符串splitstrsplitString.substringsplitString.lastIndexOfaccordingString1;//获取最后一个“.”之后的字符串大神请绕道//如果要分解的字符串为a/c/,测试得返回换行returnsplitstr;}}listener包Listener.javapackage下载.listener;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.DataStream;importjava.io.DataOutputStrea