高手进!各位有没有实现过包遍历?和找出指定包下面的所有类? 用reflect应该可以.我实验一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是目录遍历,我是要找到在 classpath 中的包下面的所有类..classpath下面的包我可以用 Package.getPackages();取得. use ZipFile to get ZipEntry of each class.then use reflectionMaybe there're some better ways 下面就是一个找包中Class的,你看看package studytest;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author not attributable * @version 1.0 */import java.awt.*;import java.awt.event.*;import java.lang.reflect.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;public class ClassTree { public static void main(String[] args) { JFrame frame=new ClassTreeFrame(); frame.show(); }}class ClassTreeFrame extends JFrame implements ActionListener{ private DefaultMutableTreeNode root; private DefaultTreeModel model; private JTree tree; private JTextField textField; public ClassTreeFrame() { setTitle("Class Tree"); setSize(300,200); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); root=new DefaultMutableTreeNode(java.lang.Object.class); model=new DefaultTreeModel(root); tree=new JTree(model); addClass(getClass()); ClassNameTreeCellRenderer renderer=new ClassNameTreeCellRenderer(); renderer.setClosedIcon(new ImageIcon("C:\\1.gif")); renderer.setOpenIcon(new ImageIcon("C:\\3.gif")); renderer.setLeafIcon(new ImageIcon("C:\\2.gif")); tree.setCellRenderer(renderer); Container contentPane=getContentPane(); contentPane.add(new JScrollPane(tree),"Center"); textField=new JTextField(); textField.addActionListener(this); contentPane.add(textField,"South"); } public void actionPerformed(ActionEvent event) { try { String text=textField.getText(); addClass(Class.forName(text)); textField.setText(""); } catch(ClassNotFoundException e) { Toolkit.getDefaultToolkit().beep(); } } public DefaultMutableTreeNode findUserObject(Object obj) { Enumeration e=root.breadthFirstEnumeration(); while(e.hasMoreElements()) { DefaultMutableTreeNode node=(DefaultMutableTreeNode)e.nextElement(); if(node.getUserObject().equals(obj)) return node; } return null; } public DefaultMutableTreeNode addClass(Class c) { if(c.isInterface()||c.isPrimitive()) return null; DefaultMutableTreeNode node=findUserObject(c); if(node!=null) return node; Class s=c.getSuperclass(); DefaultMutableTreeNode parent; if(s==null) parent=root; else parent=addClass(s); DefaultMutableTreeNode newNode=new DefaultMutableTreeNode(c); model.insertNodeInto(newNode,parent,parent.getChildCount()); TreePath path=new TreePath(model.getPathToRoot(newNode)); tree.makeVisible(path); return newNode; }}class ClassNameTreeCellRenderer extends DefaultTreeCellRenderer{ private Font plainFont=null; private Font italicFont=null; public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus) { super.getTreeCellRendererComponent(tree,value,selected,expanded,leaf,row,hasFocus); DefaultMutableTreeNode node=(DefaultMutableTreeNode)value; Class c=(Class)node.getUserObject(); if(plainFont==null) { plainFont=getFont(); if(plainFont!=null) italicFont=plainFont.deriveFont(Font.ITALIC); } if((c.getModifiers()&Modifier.ABSTRACT)==0) setFont(plainFont); else setFont(italicFont); return this; }} Thanks. CoolAbu(绿茶的白开水(★★★★)) 一个简单的文本文件加密读写类,输出有错误,请哪位大牛帮忙看一下,万分感激!!! java swing 实现上下滚动文字 文件编码转换 httpclient高手进来看一下吧.谢谢你们了 SOKET 疑难问题 ,请老大帮忙 菜鸟问题:如何解开,或者查看*.jar的文件的内容? 如何得到前几天的日期 方法的返回值可以是一个数组吗?在线等待 是初始化问题吗,急,请帮忙解决? 菜鸟跪求大侠帮忙 环境变量问题,请大家多帮忙 初学者的问题:用JAVA来实现一个最简单的数据库程序,该怎么做?
then use reflection
Maybe there're some better ways
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;public class ClassTree {
public static void main(String[] args) {
JFrame frame=new ClassTreeFrame();
frame.show();
}}class ClassTreeFrame extends JFrame implements ActionListener
{
private DefaultMutableTreeNode root;
private DefaultTreeModel model;
private JTree tree;
private JTextField textField; public ClassTreeFrame()
{
setTitle("Class Tree");
setSize(300,200);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}); root=new DefaultMutableTreeNode(java.lang.Object.class);
model=new DefaultTreeModel(root);
tree=new JTree(model); addClass(getClass()); ClassNameTreeCellRenderer renderer=new ClassNameTreeCellRenderer(); renderer.setClosedIcon(new ImageIcon("C:\\1.gif"));
renderer.setOpenIcon(new ImageIcon("C:\\3.gif"));
renderer.setLeafIcon(new ImageIcon("C:\\2.gif"));
tree.setCellRenderer(renderer); Container contentPane=getContentPane();
contentPane.add(new JScrollPane(tree),"Center"); textField=new JTextField();
textField.addActionListener(this);
contentPane.add(textField,"South");
} public void actionPerformed(ActionEvent event)
{
try
{
String text=textField.getText();
addClass(Class.forName(text));
textField.setText("");
}
catch(ClassNotFoundException e)
{
Toolkit.getDefaultToolkit().beep();
}
} public DefaultMutableTreeNode findUserObject(Object obj)
{
Enumeration e=root.breadthFirstEnumeration();
while(e.hasMoreElements())
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode)e.nextElement();
if(node.getUserObject().equals(obj))
return node; }
return null;
} public DefaultMutableTreeNode addClass(Class c)
{
if(c.isInterface()||c.isPrimitive()) return null; DefaultMutableTreeNode node=findUserObject(c);
if(node!=null) return node; Class s=c.getSuperclass(); DefaultMutableTreeNode parent;
if(s==null)
parent=root;
else
parent=addClass(s); DefaultMutableTreeNode newNode=new DefaultMutableTreeNode(c);
model.insertNodeInto(newNode,parent,parent.getChildCount()); TreePath path=new TreePath(model.getPathToRoot(newNode));
tree.makeVisible(path); return newNode;
}}class ClassNameTreeCellRenderer extends DefaultTreeCellRenderer
{
private Font plainFont=null;
private Font italicFont=null; public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus)
{
super.getTreeCellRendererComponent(tree,value,selected,expanded,leaf,row,hasFocus);
DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;
Class c=(Class)node.getUserObject(); if(plainFont==null)
{
plainFont=getFont(); if(plainFont!=null)
italicFont=plainFont.deriveFont(Font.ITALIC);
}
if((c.getModifiers()&Modifier.ABSTRACT)==0)
setFont(plainFont);
else
setFont(italicFont); return this;
}
}