把之前写的一个小东西代码分享出来

Posted Ascetic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把之前写的一个小东西代码分享出来相关的知识,希望对你有一定的参考价值。

大家接触到流的输出输入和GUI就会自己写了,其实soeasy 所以不好意思拿出来,毕竟是小白,主要还是因为懒,FileDialog也懒得弄了,讲道理界面太丑,加了dialog也挺low,自己想留着用的可以自己去完善,基本上加些东西就ok了。如果你们复制过去发现没有图片,请不要紧张,因为图片在我这啊~~你们自己照着路径修改就好了,群里面有打包了的有图片的,有需要二次元 图片的可以私聊我哟。。。。。

启动类:什么都木有,哈哈哈

 1 package practice.AsceticJ;
 2 
 3 /**
 4  * @author AsceticJ
 5  * @date 2017年2月26日 下午5:43:45
 6  * @version 1.1
 7  * @TODO Description
 8  */
 9 public class FilesManager
10 {
11     public static void main(String[] args)
12     {
13         new GUI();
14     }
15 }

图形用户界面类:

就是画图和添加事件监听

  1 package practice.AsceticJ;
  2 
  3 import java.awt.Color;
  4 import java.awt.Cursor;
  5 import java.awt.Dimension;
  6 import java.awt.FlowLayout;
  7 import java.awt.Font;
  8 import java.awt.GridLayout;
  9 import java.awt.Image;
 10 import java.awt.Label;
 11 import java.awt.Toolkit;
 12 import java.awt.event.ActionEvent;
 13 import java.awt.event.ActionListener;
 14 import java.awt.event.FocusAdapter;
 15 import java.awt.event.FocusEvent;
 16 import java.awt.event.WindowAdapter;
 17 import java.awt.event.WindowEvent;
 18 import java.io.File;
 19 import java.util.ArrayList;
 20 
 21 import javax.swing.BorderFactory;
 22 import javax.swing.ImageIcon;
 23 import javax.swing.JButton;
 24 import javax.swing.JFrame;
 25 import javax.swing.JLabel;
 26 import javax.swing.JPanel;
 27 import javax.swing.JScrollBar;
 28 import javax.swing.JScrollPane;
 29 import javax.swing.JTextArea;
 30 import javax.swing.JTextField;
 31 
 32 //import javax.swing.JComponent;
 33 /**
 34  * @author AsceticJ
 35  * @date 2017年2月25日 下午11:22:48
 36  * @version 1.0
 37 
 38  * @TODO Description
 39  */
 40 public class GUI
 41 {    
 42     public GUI(){
 43         setGUI();
 44     }
 45     
 46     private JFrame jf;
 47     private JPanel jpaMain,jpaMain1,jpaMain2,jpaMain3;
 48     
 49     private Label lbHead;//窗体内标题
 50     private Label lbOrg,lbNew;
 51     
 52     private JTextArea jta1;
 53     private JTextArea jta2;
 54     
 55     private JTextField jtf1 = new JTextField("请输入源文件夹路径");
 56     private JTextField jtf2 = new JTextField("原前缀");
 57     private JTextField jtf3 = new JTextField("原关键词");
 58     private JTextField jtf4 = new JTextField("原后缀");
 59     private JTextField jtf5 = new JTextField("请输入目标文件夹路径");
 60     private JTextField jtf6 = new JTextField("目标前缀");
 61     private JTextField jtf7 = new JTextField("目标关键词");
 62     private JTextField jtf8 = new JTextField("目标后缀");
 63     
 64     private JButton jbtn1 = new JButton("查找");
 65     private JButton jbtn2 = new JButton("查找全部");
 66     private JButton jbtn3 = new JButton("复制");
 67     private JButton jbtn4 = new JButton("删除");
 68     private JButton jbtn5 = new JButton("重命名");
 69     private JButton jbtn6 = new JButton("撤销");
 70     
 71     private String oPath,oPre,oKey,oSuf,nPre,nKey,nSuf,nPath;//存放关键词的字符串
 72     private Boolean bFlag = false;
 73     private String fSwitch ="";
 74     private String eventSwitch ="";
 75     private String [] matchFiles,matchFilesName;
 76     private String [] renamedName = {""};
 77     private ArrayList<String> matchAllFiles;
 78     
 79     //配置各个组件的参数
 80     public void setGUI()
 81     {
 82         jf = new JFrame("Files Manager");
 83         //首先设置jf的布局管理器
 84         jf.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 15));
 85         //配置整个窗体尺寸,窗居中,不可改变大小
 86         jf.setSize(1000, 600);
 87         jf.setLocationRelativeTo(null);
 88         jf.setResizable(false);
 89         
 90         //设置标题栏的Icon        
 91         Image icon = Toolkit.getDefaultToolkit().getImage("img/1.png");// 设置左上角logo图标
 92         jf.setIconImage(icon);
 93         //设置背景图片
 94         String bgPath = "img/bg4.jpg";//背景图路径
 95         ImageIcon bgImg = new ImageIcon(bgPath);//将路径指向的图片对象new出来
 96         JLabel bgJlb = new JLabel(bgImg,JLabel.CENTER);//创建一个具有水平居中的图片的label
 97         bgJlb.setBounds(0, 0, 1000, 600);//设置bgJlb大小
 98         /*下面将bgJlb放到jf的内容容器中,方式一
 99         Container bgImgCon= jf.getContentPane();//获取jf的内容对象,注意:jf.getContentPane返回一个container对象
100         ((JComponent) bgImgCon).setOpaque(false);//设置为不透明,因为container类没有这个方法,故将其转换。
101         *///方式二
102         JPanel bgImgPan = (JPanel) jf.getContentPane();//获取jf的内容对象
103         bgImgPan.setOpaque(false);//设置为不透明
104         jf.getLayeredPane().add(bgJlb, new Integer(Integer.MIN_VALUE));//将图片Jlabel设置成背景,也就是最底层
105         
106         //设置窗体内的大标题
107         lbHead = new Label("Files Manager",Label.CENTER);
108         lbHead.setForeground(Color.black);
109         lbHead.setBackground(new Color(153,153,153));
110         lbHead.setFont(new Font("黑体", Font.PLAIN, 36));
111         lbHead.setPreferredSize(new Dimension(400, 60));
112         jf.add(lbHead); 
113         
114         //设置内容布局
115         jpaMain = new JPanel();
116         GridLayout gp = new GridLayout(1,3); 
117         jpaMain.setLayout(gp);
118         jpaMain.setOpaque(false);
119         jpaMain.setPreferredSize(new Dimension(840, 450));
120         
121         Color bdColor = Color.white;
122         Font h2Font = new Font("黑体", Font.PLAIN, 20);
123         Font taFont = new Font("宋体",Font.BOLD , 14);
124         
125         //源文件预览框
126         jpaMain1 = new JPanel();
127         jpaMain1.setOpaque(false);
128         jpaMain1.setBorder(BorderFactory.createLineBorder(bdColor, 2));
129         jpaMain1.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
130         //预览框标题
131         lbOrg =new Label("sourceFiles", Label.CENTER);
132         lbOrg.setForeground(Color.white);
133         lbOrg.setBackground(new Color(40,64,90));
134         lbOrg.setFont(h2Font);
135         lbOrg.setPreferredSize(new Dimension(276, 30));
136         jpaMain1.add(lbOrg);
137         //设置预览文本域
138         jta1 = new JTextArea();
139         jta1.setForeground(Color.red);
140         jta1.setOpaque(false);
141         jta1.setFont(taFont);
142         jta1.setLineWrap(true);
143         jta1.setEditable(false);
144         //给文本框设置滚动条
145         JScrollPane jsp1 = new JScrollPane(jta1);
146         jsp1.setPreferredSize(new Dimension(278,419));
147         //设置滚动条部分组件和视口透明
148         jsp1.setOpaque(false);
149         jsp1.getViewport().setOpaque(false);
150         JScrollBar jscr1 = jsp1.getVerticalScrollBar();
151         jscr1.setOpaque(false);
152         jscr1.getComponent(0).setVisible(false);
153         jscr1.getComponent(1).setVisible(false);
154         jpaMain1.add(jsp1);        
155         jpaMain.add(jpaMain1);
156                 
157         //目标文件预览框
158         jpaMain2 = new JPanel();
159         jpaMain2.setOpaque(false);
160         jpaMain2.setBorder(BorderFactory.createLineBorder(bdColor, 2));
161         jpaMain2.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
162         //预览框标题
163         lbNew =new Label("newFiles", Label.CENTER);
164         lbNew.setForeground(Color.white);
165         lbNew.setBackground(new Color(40,64,90));
166         lbNew.setFont(h2Font);
167         lbNew.setPreferredSize(new Dimension(276, 30));
168         jpaMain2.add(lbNew);
169         //文件预览文本域
170         jta2 = new JTextArea("声明:本程序只是本人为了实现筛选复制和重命名测试用的,部分功能可以用Windows自带的功能实现。\\n\\n操作说明:\\n 1、点击查找或者查找全部\\n 2、确认你选择的文件是否正确\\n 3、路径输入格式为root:\\\\fold\\\\fold\\n 4、如果想将文件保存在新的文件夹中,可以在目标路径加上\\\\新建文件夹名 \\n 5、撤销只能撤销上一步");
171         jta2.setOpaque(false);
172         jta2.setForeground(Color.blue);
173         jta2.setFont(taFont);
174         jta2.setLineWrap(true);
175         jta2.setEditable(false);
176         //给文本框设置滚动条
177         JScrollPane jsp2 = new JScrollPane(jta2);
178         jsp2.setPreferredSize(new Dimension(278,419));
179         //设置滚动条部分组件和视口透明
180         jsp2.setOpaque(false);
181         jsp2.getViewport().setOpaque(false);
182         JScrollBar jscr2 = jsp2.getVerticalScrollBar();
183         jscr2.setOpaque(false);
184         jscr2.getComponent(0).setVisible(false);
185         jscr2.getComponent(1).setVisible(false);
186         jpaMain2.add(jsp2);
187         jpaMain.add(jpaMain2);  
188         
189         //设置菜单栏
190         jpaMain3 = new JPanel();
191         jpaMain3.setOpaque(false);
192         jpaMain3.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 30));
193         //给所有的文本框参数初始化
194         initJTF(jtf1, 276);
195         initJTF(jtf2, 92);
196         initJTF(jtf3, 92);
197         initJTF(jtf4, 92);
198         initJTF(jtf5, 276);
199         initJTF(jtf6, 92);
200         initJTF(jtf7, 92);
201         initJTF(jtf8, 92);
202         //将文本框加到jpaMain3
203         jpaMain3.add(jtf1);
204         jpaMain3.add(jtf2);
205         jpaMain3.add(jtf3);
206         jpaMain3.add(jtf4);
207         jpaMain3.add(jtf5);
208         jpaMain3.add(jtf6);
209         jpaMain3.add(jtf7);
210         jpaMain3.add(jtf8);
211         
212         //初始化按钮参数
213         initJBtn(jbtn1, 90);
214         initJBtn(jbtn2, 90);
215         initJBtn(jbtn3, 90);
216         initJBtn(jbtn4, 90);
217         initJBtn(jbtn5, 90);
218         initJBtn(jbtn6, 90);
219       //将按钮加到jpaMain3
220         jpaMain3.add(jbtn1);
221         jpaMain3.add(jbtn2);
222         jpaMain3.add(jbtn3);
223         jpaMain3.add(jbtn4);
224         jpaMain3.add(jbtn5);
225         jpaMain3.add(jbtn6);
226         
227         jpaMain.add(jpaMain3);
228         jf.add(jpaMain);
229         //调用事件监听
230         gEvent();
231         jf.setVisible(true);
232 //        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
233     }
234         
235     private void gEvent()
236     {               
237         jf.addWindowListener(new WindowAdapter() {
238             public void windowClosing(WindowEvent e) {
239                 FilesEvent.clearTemp();
240                 System.exit(0);
241             }
242         });
243 
244         //源文件路径文本框添加键盘失焦事件,以便快速检查用户输入的正确性
245         jtf1.addFocusListener(new FocusAdapter()
246         {
247             public void focusLost(FocusEvent e)
248             {
249                 oPath = jtf1.getText();
250                 if (oPath.equals("请输入源文件夹路径"))
251                 {
252                     bFlag=false;
253                     return;
254                 }
255                 File oFiles = new File(oPath);
256                 bFlag = oFiles.exists()?true:false;
257                 if(!bFlag)jtf1.setText("您输入的路径有误!");
258                 return;
259             }
260         });
261         //给查找按钮添加点击事件
262         jbtn1.addActionListener(new ActionListener(){
263             @Override
264             public void actionPerformed(ActionEvent e)
265             {
266                 if(!bFlag) return;
267                 getKeyWords(true);
268                 FilesEvent.setKeyWords(oPre,oKey,oSuf);
269                 matchFiles = FilesEvent.filesSearch(oPath);
270                 int len = matchFiles.length;
271                 matchFilesName = new String [len];
272                 jta1.setText("");
273                 if(matchFiles[0].isEmpty()){
274                     jta1.setText("找不到您要的文件,请检查关键词是否正确!");
275                 }else{                
276                     for (int i=0;i<matchFiles.length;i++)
277                     {
278                         int lIndex = matchFiles[i].lastIndexOf(\'\\\\\');//截取文件地址上的文件名
279                         matchFilesName[i] = matchFiles[i].substring(lIndex+1);
280                         jta1.append((i+1) +"."+matchFilesName[i]+"\\n");
281                     }
282                 }
283                 fSwitch = "searchCurrent";
284                 eventSwitch = "searchCurrent";//给查找按钮标记为"searchCurrent"    
285             }
286         });
287         //给查找全部添加点击事件
288         jbtn2.addActionListener(new ActionListener()
289         {
290             @Override
291             public void actionPerformed(ActionEvent e)
292             {
293                 if(!bFlag) return;
294                 getKeyWords(true);
295                 FilesEvent.setKeyWords(oPre,oKey,oSuf);
296                 matchAllFiles = new ArrayList<String>();
297                 FilesEvent.filesSearchAll(oPath,matchAllFiles);
298                 jta1.setText("");
299                 if(matchAllFiles.isEmpty()){
300                     jta1.setText("找不到您要的文件,请检查关键词是否正确!");
301                 }else{
302                     int index = 1;
303                     for (String maf : matchAllFiles)
304                     {
305                         int lIndex = maf.lastIndexOf(\'\\\\\');
306                         jta1.append(index+"."+maf.substring(lIndex+1)+"\\n");
307                         index++;
308                     }
309                 }
310                 fSwitch = "searchAll";
311                 eventSwitch = "searchAll";//给查找按钮标记为"searchAll"
312             }
313         });
314         //给复制按钮添加事件
315         jbtn3.addActionListener(new ActionListener()
316         {            
317             @Override
318             public void actionPerformed(ActionEvent e)
319             {
320                 if(fSwitch.equals("")){return;}
321                 jta2.setText("");
322                 nPath = jtf5.getText();
323                 switch (fSwitch)
324                 {
325                 case "searchCurrent":
326                     int j = 1;
327                     for(String fPath:matchFiles){
328                         String copyTips = FilesEvent.filesCopy(fPath, nPath);
329                         jta2.append(j+"."+copyTips+"\\n");
330                         j++;
331                     }
332                     jta2.append("已经完成复制操作!\\n");
333                     break;
334                 case "searchAll":
335                     int k = 1;
336                     for(String fPath:matchAllFiles){
337                         String copyTips = FilesEvent.filesCopy(fPath, nPath);
338                         jta2.append(k+"."+copyTips+"\\n");
339                         k++;
340                     }
341                     jta2.append("已经完成复制操作!\\n");
342                     break;
343                 }
344                 eventSwitch = "filesCopy";//给复制按钮标记为"filesCopy"
345             }
346         });
347         //给删除按钮添加事件
348         jbtn4.addActionListener(new ActionListener()
349         {
350             @Override
351             public void actionPerformed(ActionEvent e)
352             {
353                 if(fSwitch.equals("")){return;}
354                 jta2.setText("");
355                 File tempFolder =  new File("C:\\\\Temp\\\\FilesManager");
356                 if(!tempFolder.exists()){
357                     tempFolder.mkdirs();
358                 }
359                 String [] tempName = tempFolder.list();
360                 if(0!=tempName.length){
361                     File [] templist = tempFolder.listFiles();
362                     for (File tf : templist)
363                     {
364                         tf.delete();//先清空缓存文件夹
365                     }
366                 }
367                 
368                 if(fSwitch.equals("searchCurrent"))
369                 {
370                     int j = 1;
371                     for(String fPath:matchFiles){
372                         String tips;
373                         if (!new File(fPath).exists())
374                         {
375                             tips = ".您要删除的文件不存在!\\n";
376                    

以上是关于把之前写的一个小东西代码分享出来的主要内容,如果未能解决你的问题,请参考以下文章

新的开始

thinkphp把HTML+PHP写的一个页面代码存入数据库以后 读取出来的效果HTML代码解析了PHP代码被直接输出

学习和分享的人

后台商品属性组合小例子

Android课程---Android Studio使用小技巧:提取方法代码片段

canvas瓦片图2