平时工作,经常要打开不同的文件夹找东西,打开多了,占满任务栏的位置,自己也觉得乱。而且每次打开文件夹时,都要经历“我的电脑→E盘 →project......”,这个让我觉得太麻烦。因此自己做个小工具,实现快捷打开文件夹、程序的功能。
整个程序的主角是Runtime.getRuntime().exec()的使用,不懂Runtime.getRuntime().exec(),请自己 Google、Baidu了解下,这样不作解释。
啥也不说,先上两个图:
先介绍点击列表时执行的代码,主要实现功能:鼠标经过时,选项背景色会改变;单击选项时,执行Runtime.getRuntime().exec()记录在Item中的命令代码。
list.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { Object item = list.getSelectedValue(); if (item != null && item instanceof ItemStruct) { ItemStruct is = (ItemStruct) item; try { if (is.getDir() == null || is.getDir().equals("")) { Process process = Runtime.getRuntime().exec( is.getCmd()); } else if (!is.getDir().equals("")) { File dir = new File(is.getDir()); Process process = Runtime.getRuntime().exec( is.getCmd(), null, dir); } } catch (Exception ex) { javax.swing.JOptionPane.showMessageDialog(null, "打开" + is.getLabel() + "失败!"); ex.printStackTrace(); } list.setSelectedIndex(-1); } } public void mouseExited(MouseEvent e) { list.clearSelection(); } }); list.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { } public void mouseMoved(MouseEvent e) { int i = list.locationToIndex(e.getPoint()); if (i > -1) { list.setSelectedIndex(i); } } });
列表Item记录的数据和命令(这里只是随便列出几个命令给大家参考,需要其它打开命令的,可以自行添加)
public static List<ListPanelItem> panelItemList = new ArrayList<ListPanelItem>(); static{ ListPanelItem panelItem = null; panelItem = new ListPanelItem(); panelItem.setName("我的电脑"); File[] roots = File.listRoots(); ItemStruct[] itemStructs = new ItemStruct[roots.length + 3]; for(int i = 0; i < roots.length; i ++){ String totalSpace = calculateSpace(roots.getTotalSpace()); String usableSpace = calculateSpace(roots.getUsableSpace()); String name = roots.toString().replace("\\", ""); itemStructs = new ItemStruct( name + "盘 (" + usableSpace +") " + totalSpace,"explorer.exe " + roots.toString()); } //windows命令行代码,需要其它的话,自行搜索下window命令行命令。 itemStructs[roots.length ] = new ItemStruct("网上邻居","explorer.exe ::{208D2C60-3AEA-1069-A2D7-08002B30309D}"); itemStructs[roots.length + 1] = new ItemStruct("回收站","explorer.exe ::{645FF040-5081-101B-9F08-00AA002F954E}"); itemStructs[roots.length + 2] = new ItemStruct("记事本","notepad"); panelItem.setItems(itemStructs); panelItemList.add(panelItem); panelItem = new ListPanelItem(); panelItem.setName("关机管理"); panelItem.setItems(new ItemStruct[] { new ItemStruct("关机","Shutdown.exe -s -t 00"), new ItemStruct("重启","Shutdown.exe -r -f -t 00"), new ItemStruct("取消关机","shutdown -a") } ); panelItemList.add(panelItem); panelItem = new ListPanelItem(); panelItem.setName("应用程序"); panelItem.setItems(new ItemStruct[] { //这个是我本机的Tomcat安装位置 new ItemStruct("启动Tomcat", "cmd /c E:\\project\\server\\bin\\startup.bat", "E:\\project\\server\\bin"), } ); panelItemList.add(panelItem); }
源码下载