⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findinjar.java

📁 自己编写的一个用于查找java类所在包的完整源程序,编程环境是Eclipse+JDK1.5.压缩包中包括了帮助(运行后也可以查看帮助菜单).是windows风格的运行界面.建议您自己做一个可双击运行的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package mypack;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Dimension;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.KeyEvent;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.JScrollPane;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.DefaultListModel;

import java.io.File;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JViewport;
import java.net.URL;
import javax.swing.JEditorPane;
import javax.swing.SwingConstants;
import javax.swing.BorderFactory;

public class FindInJar {

	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="9,0"
	private JPanel jContentPane = null;
	private JMenuBar jJMenuBar = null;
	private JMenu fileMenu = null;
	private JMenuItem addMenuItem = null;
	private JMenuItem searchMenuItem = null;
	private JMenuItem exitMenuItem = null;
	private JLabel foldersLabel = null;
	private JLabel classLabel = null;
	private JLabel injarLabel = null;
	private JTextField classTextBox = null;
	private JList foldersList = null;
	private JList injarList = null;
	private JButton addButton = null;
	private JButton removeButton = null;
	private JButton searchButton = null;
	private JMenu helpMenu = null;
	private JScrollPane jScrollPane1 = null;
	private JScrollPane jScrollPane2 = null;
	private DefaultListModel listModel1=null;
	private DefaultListModel listModel2=null;
	private JMenuItem removeMenuItem = null;
	private JMenuItem helpMenuItem = null;
	private JMenuItem aboutMenuItem = null;
	private JMenu optionMenu = null;
	private JCheckBoxMenuItem recurseMenuItem = null;
	private JCheckBoxMenuItem fullclassMenuItem = null;
	private JScrollPane jScrollPane3 = null;
	private JTable jTable = null;
	
	private String className;  //  @jve:decl-index=0:
	private ArrayList jarFiles=new ArrayList();  //  @jve:decl-index=0:
	private boolean recurse=false;
	private boolean fullclass=false;
	private DefaultTableModel defaultTableModel=null;
	private JFrame helpFrame = null;  //  @jve:decl-index=0:visual-constraint="637,61"
	private JPanel helpContentPane = null;
	private JScrollPane helpPane = null;
	private JLabel totalFoundLabel = null;
	private int totalFound=0;
	private JFileChooser jfchooser=null;
	public FindInJar(){
		jfchooser=new JFileChooser();
		jfchooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
		jfchooser.setDialogTitle("选择文件/文件夹");
		jfchooser.setApproveButtonText("选择");
		jfchooser.setMultiSelectionEnabled(true);
		MyFilter zipFilter=new MyFilter("zip","zip files(*.zip)");
		jfchooser.addChoosableFileFilter(zipFilter);
		MyFilter jarFilter=new MyFilter("jar","jar files(*.jar)");
		jfchooser.addChoosableFileFilter(jarFilter);
		MyFilter bothFilter = new MyFilter(new String[] {"zip", "jar"}, "zip and jar files(*.zip,*.jar)");
		jfchooser.addChoosableFileFilter(bothFilter);
		jfchooser.setFileFilter(jarFilter);
	}

	protected String getClassName(ZipEntry entry){
		StringBuffer className=new StringBuffer(entry.getName().replace('/','.'));
		return className.toString();
	}
	
	private void setClassName(String className){
		this.className=className;
	}	
	
	protected void search(String filepath,boolean recurse){
		File f=new File(filepath);
		if(f.isDirectory()){
			File[] files=f.listFiles();
			for(int i=0;i<files.length;i++){
				if(recurse && files[i].isDirectory()){
					search(files[i].getAbsolutePath(),recurse);
				}else{
					String filename=files[i].getAbsolutePath();
					searchZipFile(filename);
				}
			}
		}else if(f.isFile()){
			searchZipFile(f.getPath());
		}
	}

	private void searchZipFile(String filename){
		try{
			if(filename.endsWith(".jar") || filename.endsWith(".zip")){
				ZipFile zip=new ZipFile(filename);
				Enumeration entries=zip.entries();
				while(entries.hasMoreElements()){
					ZipEntry entry=(ZipEntry)entries.nextElement();
					String thisClassName=getClassName(entry);
					if(fullclass){
						if(thisClassName.equals(this.className) || thisClassName.equals(this.className+".class")){
							jarFiles.add(filename);
							totalFound=totalFound+1;
						}
					}else{
						if(thisClassName.endsWith("."+this.className) || thisClassName.endsWith("."+this.className+".class")){
							jarFiles.add(filename+"/"+thisClassName);
							totalFound=totalFound+1;
						}
					}

				}
			}
		}catch(Exception e){
			String msg=e.getMessage()+": "+filename;
			jarFiles.add(msg);
		}
	}
	
	/**
	 * This method initializes optionMenu	
	 * 	
	 * @return javax.swing.JMenu	
	 */
	private JMenu getOptionMenu() {
		if (optionMenu == null) {
			optionMenu = new JMenu();
			optionMenu.setText("选项");
			optionMenu.add(getRecurseMenuItem());
			optionMenu.add(getFullclassMenuItem());
		}
		return optionMenu;
	}

	/**
	 * This method initializes recurseMenuItem	
	 * 	
	 * @return javax.swing.JCheckBoxMenuItem	
	 */
	private JCheckBoxMenuItem getRecurseMenuItem() {
		if (recurseMenuItem == null) {
			recurseMenuItem = new JCheckBoxMenuItem();
			recurseMenuItem.setText("搜索子文件夹");
			recurseMenuItem.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if(recurseMenuItem.isSelected())
						recurse=true;
					else
						recurse=false;
				}
			});
		}
		return recurseMenuItem;
	}

	/**
	 * This method initializes fullclassMenuItem	
	 * 	
	 * @return javax.swing.JCheckBoxMenuItem	
	 */
	private JCheckBoxMenuItem getFullclassMenuItem() {
		if (fullclassMenuItem == null) {
			fullclassMenuItem = new JCheckBoxMenuItem();
			fullclassMenuItem.setText("使用完整类名");
			fullclassMenuItem.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if(fullclassMenuItem.isSelected())
						fullclass=true;
					else
						fullclass=false;
				}
			});
		}
		return fullclassMenuItem;
	}

	/**
	 * This method initializes jScrollPane3	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane3() {
		if (jScrollPane3 == null) {
			jScrollPane3 = new JScrollPane();
			jScrollPane3.setSize(new Dimension(274, 220));
			jScrollPane3.setLocation(new Point(308, 58));
			jScrollPane3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
			jScrollPane3.setViewportView(getJTable());
		}
		return jScrollPane3;
	}

	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			defaultTableModel = new DefaultTableModel();
			defaultTableModel.setColumnCount(0);
			defaultTableModel.setRowCount(0);
			defaultTableModel.addColumn("文件名");
			defaultTableModel.addColumn("完整类名");
			jTable = new JTable(defaultTableModel);
			jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
			jTable.setShowGrid(true);
		}
		return jTable;
	}
	

	/**
	 * This method initializes helpFrame	
	 * 	
	 * @return javax.swing.JFrame	
	 */
	private JFrame getHelpFrame() {
		if (helpFrame == null) {
			helpFrame = new JFrame();
			helpFrame.setSize(new Dimension(435, 506));
			helpFrame.setTitle("帮助");
			helpFrame.setResizable(false);
			helpFrame.setContentPane(getHelpContentPane());
		}
		return helpFrame;
	}

	/**
	 * This method initializes helpContentPane	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getHelpContentPane() {
		if (helpContentPane == null) {
			helpContentPane = new JPanel();
			helpContentPane.setLayout(null);
			helpContentPane.add(getHelpPane(), null);
		}
		return helpContentPane;
	}

	/**
	 * This method initializes helpPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getHelpPane() {
		if (helpPane == null) {
			helpPane = new JScrollPane();
			helpPane.setBounds(new Rectangle(0, 0, 430, 474));
		}
		return helpPane;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		FindInJar findjar=new FindInJar();
		JFrame jf=findjar.getJFrame();
		jf.setVisible(true);
		
	}	
	
	/**
	 * This method initializes jScrollPane1	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null) {
			jScrollPane1 = new JScrollPane();
			jScrollPane1.setLocation(new Point(10, 38));
			jScrollPane1.setSize(new Dimension(274, 240));
			jScrollPane1.setViewportView(getFoldersList());
		}
		return jScrollPane1;
	}

	/**
	 * This method initializes jScrollPane2	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane2() {
		if (jScrollPane2 == null) {
			jScrollPane2 = new JScrollPane();
			jScrollPane2.setLocation(new Point(308, 58));
			jScrollPane2.setViewportView(getInjarList());
			jScrollPane2.setSize(new Dimension(274, 220));
			jScrollPane2.setVisible(true);
		}
		return jScrollPane2;
	}

	/**
	 * This method initializes removeMenuItem	
	 * 	
	 * @return javax.swing.JMenuItem	
	 */
	private JMenuItem getRemoveMenuItem() {
		if (removeMenuItem == null) {
			removeMenuItem = new JMenuItem();
			removeMenuItem.setText("移除");
			removeMenuItem.setActionCommand("移除");
			removeMenuItem.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					removeButton.getActionListeners()[0].actionPerformed(e);
				}
			});
		}
		return removeMenuItem;
	}

	/**
	 * This method initializes helpMenuItem	
	 * 	
	 * @return javax.swing.JMenuItem	
	 */
	private JMenuItem getHelpMenuItem() {
		if (helpMenuItem == null) {
			helpMenuItem = new JMenuItem();
			helpMenuItem.setText("帮助");
			helpMenuItem.addActionListener(new java.awt.event.ActionListener() {   
				public void actionPerformed(java.awt.event.ActionEvent e) {    
					helpFrame=getHelpFrame();
					JViewport vp=helpPane.getViewport();
					URL url=helpContentPane.getClass().getResource("/readme.html");
					try{
						JEditorPane html=new JEditorPane(url);
						html.setEditable(false);
						vp.add(html);
						helpFrame.setVisible(true);
					}catch(Exception ex){
						JOptionPane.showMessageDialog(jFrame, ex.getMessage(),"错误",JOptionPane.ERROR_MESSAGE);						
					}
				}
		
			});
		}
		return helpMenuItem;
	}

	/**
	 * This method initializes aboutMenuItem	
	 * 	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -