标题:[求助]关于内部类的问题!!
只看楼主
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
 问题点数:0 回复次数:2 
[求助]关于内部类的问题!!

我想问的是:内部类访问其所在的外部类里的组件的时候,语法规则是怎么样的呢?还是没有办法实现?
举个例子:

//控制面板类
class ControlPanel extends JPanel
{
public ControlPanel()
{
JLabel label=new JLabel("睡眠"); //添加标签
TextField field2=new TextField(10); //添加编辑睡眠时间的文本行
int sleeptime=(int)(Math.random()*100); //随机产生睡眠时间
field2.setText(""+sleeptime); //显示睡眠时间
add(label);
add(field2);

JButton button1=new JButton("启动");
JButton button2=new JButton("中断");
add(button1);
add(button2);

actionListener s =new actionListener();
button1.addActionListener(s); //为按钮注册监听
button2.addActionListener(s);
}

//用来监听的内部类
class actionListener implements ActionListener
{

public void actionPerformed(ActionEvent e)
{
if((e.getActionCommand()).equals("启动")) //判断事件源
{

/* 比如我要设置在这里设置文本行field2的显示内容;
* 或者我要把button1设置为setEnabled(false)的状态,
* 代码该如何实现呢?
*/
}
}
}
}

搜索更多相关主题的帖子: 部类 
2007-05-28 21:34
pity1115
Rank: 1
等 级:新手上路
威 望:2
帖 子:184
专家分:0
注 册:2006-9-15
得分:0 
把添加的那几个组件在构造方法外面定义,在内部类里就可以直接进行修改了。
class ControlPanel extends JPanel
{
JLabel label;
TextField field2;
JButton button1;
JButton button2;
public ControlPanel()
{
label=new JLabel(\"睡眠\"); //添加标签
field2=new TextField(10); //添加编辑睡眠时间的文本行
int sleeptime=(int)(Math.random()*100); //随机产生睡眠时间
field2.setText(\"\"+sleeptime); //显示睡眠时间
add(label);
add(field2);

button1=new JButton(\"启动\");
button2=new JButton(\"中断\");
add(button1);
add(button2);

actionListener s =new actionListener();
button1.addActionListener(s); //为按钮注册监听
button2.addActionListener(s);
}

//用来监听的内部类
class actionListener implements ActionListener
{

public void actionPerformed(ActionEvent e)
{
if((e.getActionCommand()).equals(\"启动\")) //判断事件源
{
field2.setText(\"Test\");

/* 比如我要设置在这里设置文本行field2的显示内容;
* 或者我要把button1设置为setEnabled(false)的状态,
* 代码该如何实现呢?
*/
}
}
}
}

2007-05-28 22:14
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
得分:0 
哦!这样就行啊,谢谢你啦!
就是因为这个原因,我的那个判断事件源的语句才会采用匹配标签的方法.《Java核心技术》里面说这样做存在安全隐患.现在好了,问题解决了.

2007-05-29 10:07



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




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

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