package TreeFrame;
import javax.swing.*;
import javax.swing.tree.*;
class Tree extends JTree {
/**
* @param args
*/
static DefaultMutableTreeNode root = new
DefaultMutableTreeNode("资源管理器");
static DefaultMutableTreeNode root1 = new
DefaultMutableTreeNode("桌面");
static DefaultTreeModel treeModel = new DefaultTreeModel(root);
JTree tree = new JTree(treeModel);
JScrollPane scrollPane = new JScrollPane();
public Tree() {
treeModel.insertNodeInto(root1, root, 0);
setTree();
DefaultMutableTreeNode node1 = new
DefaultMutableTreeNode("我的电脑");
DefaultMutableTreeNode node2 = new
DefaultMutableTreeNode("回收站");
treeModel.insertNodeInto(node1, root1, root1.getChildCount());
treeModel.insertNodeInto(node2, root1, root1.getChildCount());
//new TreeMenu();
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception el) {
el.printStackTrace();
System.exit(0);
}
}
public void setTree() {
scrollPane.setViewportView(tree);
}
public JScrollPane getTree() {
return scrollPane;
}
}
上面红色的地方,如果变量声明为static的 这时就会添加两次,不明白为什么。。。
还有一个问题就是,我不把这里的变量声明为static的话,同一个包中的其它类为什么不能引用!!
----------------解决方案--------------------------------------------------------
这里的静态变量是为了让别的类方便使用
----------------解决方案--------------------------------------------------------
这个我当然知道啊!!!这个类是我自已写的!!
我是问为什么不加static就会出现上面的问题啊!! 加了出现第一个问题,不加是第二个问题。。。
----------------解决方案--------------------------------------------------------
你声明为static后,无论这个类生成了多少个对象,static的变量大家都只有一份,
这就是static 的好处
----------------解决方案--------------------------------------------------------
是啊 我知道啊 那为什么添加的时候会加入双份的呢?
说的清楚点好么
----------------解决方案--------------------------------------------------------
static 会生成两次?
不可能的,一定是你哪里弄错了
----------------解决方案--------------------------------------------------------
那你把这段代码运行下就知道了呀 大体就是这样 其它另一个启动类我没帖上来 里面没什么东西 你可以自已给这个方法加个MAIN试下
----------------解决方案--------------------------------------------------------
[CODE]这是我的MIAN类:
package TreeFrame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
super("JAVA做的windows资源管理器---しΟν∈→魈制作");
//getContentPane().add(new Tree().getTree());
//getContentPane().add(new Frame());
JSplitPane splitPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
true, new Tree().getTree(), new Tree().getTree());
getContentPane().add(splitPanel);
this.setSize(new Dimension(800, 600));
this.setLocation(100, 50);
this.show();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new Main();
}
}[/CODE]
----------------解决方案--------------------------------------------------------
你把所有的代码都帖上来看看
----------------解决方案--------------------------------------------------------
帖上来了啊
----------------解决方案--------------------------------------------------------