把之前写的一个小东西代码分享出来
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代码被直接输出