标题:[讨论]这里的static起了什么作用
取消只看楼主
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
 问题点数:0 回复次数:9 
[讨论]这里的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 
2007-02-05 10:36
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
这个我当然知道啊!!!这个类是我自已写的!!
我是问为什么不加static就会出现上面的问题啊!! 加了出现第一个问题,不加是第二个问题。。。

开开心心的过&玩每一天!!!!
2007-02-05 11:03
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
是啊  我知道啊  那为什么添加的时候会加入双份的呢?
说的清楚点好么

开开心心的过&玩每一天!!!!
2007-02-05 11:16
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
那你把这段代码运行下就知道了呀  大体就是这样  其它另一个启动类我没帖上来  里面没什么东西 你可以自已给这个方法加个MAIN试下

开开心心的过&玩每一天!!!!
2007-02-05 11:25
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 

[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]


开开心心的过&玩每一天!!!!
2007-02-05 11:27
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
帖上来了啊 

开开心心的过&玩每一天!!!!
2007-02-05 11:28
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
以下是引用Java在2007-2-5 11:38:47的发言:
还有,你的 Main用了过时的方法,现 在使组件可见,最好不要用show方法,而要用setVisible(true)的方法

呵呵,这样比较省事嘛,呵呵。这个问题还不是太大啦!!
谢谢你的解决 理解了 是我在MIAN中用了两次NEW TREE()的关系 但是为什么不把那些变量设成static就没问题呢!


开开心心的过&玩每一天!!!!
2007-02-05 11:52
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
以下是引用Java在2007-2-5 12:27:36的发言:
static的东西只会执行一次,只有一份.无论你new多少次对象,它只调用一次,生成一次
快搞晕了。。。我现在是不加STATIC的时候  他也只是添加进去一个啊。。
哎,算了  也许过段时间就能理解了。。。现在脑子都昏了

开开心心的过&玩每一天!!!!
2007-02-05 12:31
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 

想女人想成这样?


开开心心的过&玩每一天!!!!
2007-02-05 13:21
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 

哎  这个STATIC的理解跟我的问题 不要STATIC 的时候也只是一个  有关么?  不太感觉啊


开开心心的过&玩每一天!!!!
2007-02-05 15:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-119681-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096528 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved