当前位置: 代码迷 >> Java相关 >> [讨论]这里的static起了什么作用
  详细解决方案

[讨论]这里的static起了什么作用

热度:188   发布时间:2007-02-05 10:36:54.0
[讨论]这里的static起了什么作用

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  资源管理器  new  JTree  import  

----------------解决方案--------------------------------------------------------
这里的静态变量是为了让别的类方便使用
----------------解决方案--------------------------------------------------------
这个我当然知道啊!!!这个类是我自已写的!!
我是问为什么不加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]


----------------解决方案--------------------------------------------------------
你把所有的代码都帖上来看看
----------------解决方案--------------------------------------------------------
帖上来了啊 
----------------解决方案--------------------------------------------------------
  相关解决方案