标题:[讨论]这里的static起了什么作用
只看楼主
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
得分:0 

[CODE]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);
static{
DefaultMutableTreeNode node1 = new
DefaultMutableTreeNode("我的电脑");
DefaultMutableTreeNode node2 = new
DefaultMutableTreeNode("回收站");

treeModel.insertNodeInto(node1, root1, root1.getChildCount());
treeModel.insertNodeInto(node2, root1, root1.getChildCount());
}
JTree tree = new JTree(treeModel);

JScrollPane scrollPane = new JScrollPane();


public Tree() {
treeModel.insertNodeInto(root1, root, 0);
setTree();


//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;
}

}[/CODE]

这样就不会了,但是类最好不要这个设计

你知道开始为什么会加两个吗?因为你的构造函数调用了两次,你把加进去的操作放在构造函数里面,当然会加两篇了

现在把它弄成静态初始化块,就只会执行一次了


Java,My Love!
2007-02-05 11:37
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
得分:0 
还有,你的 Main用了过时的方法,现 在使组件可见,最好不要用show方法,而要用setVisible(true)的方法

Java,My Love!
2007-02-05 11:38
しΟν∈→鱈
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
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
得分:0 
static的东西只会执行一次,只有一份.无论你new多少次对象,它只调用一次,生成一次

还有,show并不比setVisible(true)省多少事,编程要养成一个好习惯,这些好习惯就是从点滴做起的

你想想,万一哪天JVM不再支持show这个方法了,你的程序岂不是白写了

过了时的东西说不一定以后哪个版本就不再支持 了

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

开开心心的过&玩每一天!!!!
2007-02-05 12:31
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
哎~~为什么都没有女的来呢

淘宝杜琨
2007-02-05 13:18
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 

想女人想成这样?


开开心心的过&玩每一天!!!!
2007-02-05 13:21
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
得分:0 
以下是引用神vLinux飘飘在2007-2-5 13:18:00的发言:
哎~~为什么都没有女的来呢

汝之心,色也


Java,My Love!
2007-02-05 14:21
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
static我理解。。。

这么解释:所有的对象共用同一个份static第一的东西。

无论用哪个对象改,改来改去全是类里面定义的那一份。。。

是么?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2007-02-05 14:35
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
得分:0 
不错,你理解的对

Java,My Love!
2007-02-05 14:56



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




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

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