java如何在监听器类里访问外部的值
答案:6 悬赏:70 手机版
解决时间 2021-04-05 10:18
- 提问者网友:放下
- 2021-04-04 10:42
java如何在监听器类里访问外部的值
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-04-04 12:01
把i作为外部的类的一个属性,而不只是在方法之中声明。
那样就可以访问了。
如下面的例子:
public class Test3 {
private int n; //再次将n定义为Test3的属性,而不只是方法之中的一个局部变量。
private InterA iter;
public Test3() {
n = 10;
this.setInterA(new InterA() {
public int count() {
int sum = 0;
for(int i=0; i sum += i;
return sum;
}
});
}
public void setInterA(InterA a ) {
iter = a;
}
public static void main(String []args) {
}
}
interface InterA {
int count();
};
那样就可以访问了。
如下面的例子:
public class Test3 {
private int n; //再次将n定义为Test3的属性,而不只是方法之中的一个局部变量。
private InterA iter;
public Test3() {
n = 10;
this.setInterA(new InterA() {
public int count() {
int sum = 0;
for(int i=0; i
return sum;
}
});
}
public void setInterA(InterA a ) {
iter = a;
}
public static void main(String []args) {
}
}
interface InterA {
int count();
};
全部回答
- 1楼网友:低音帝王
- 2021-04-04 14:00
试试this.i
- 2楼网友:不想翻身的咸鱼
- 2021-04-04 13:53
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Demo extends JFrame
{
private int i = 0;
public Demo()
{
JButton b3 = new JButton("xx");
b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
i = i + 1;// 这样编译不通过的,,怎么样才能去访问外部的值;
// 或者在用JFileChooser的时候在另个按钮监听器的设置
// 的默认目录在这个监听器里怎么用还是在外面设置个
// 能两方都用的JFileChooser
System.out.println("i");
}
});
}
}
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Demo extends JFrame
{
private int i = 0;
public Demo()
{
JButton b3 = new JButton("xx");
b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
i = i + 1;// 这样编译不通过的,,怎么样才能去访问外部的值;
// 或者在用JFileChooser的时候在另个按钮监听器的设置
// 的默认目录在这个监听器里怎么用还是在外面设置个
// 能两方都用的JFileChooser
System.out.println("i");
}
});
}
}
- 3楼网友:蓝房子
- 2021-04-04 13:44
final int i = 0 ;
- 4楼网友:行雁书
- 2021-04-04 13:22
4楼正解。把要访问的变量设置为成员变量、全局变量,不要把它定义在方法中,不然这种内部方法块不能使用此变量。
- 5楼网友:慢性怪人
- 2021-04-04 13:10
把ActionEvent封装一下,然后做一个可以传递数据进去的构造方法
比如叫MyActionEvent
加入一个 Map data;
new的时候把i传进去
然后map.put("i",i);
之后这样的MyActionEvent就能通用于你遇到的类似情况了
比如叫MyActionEvent
加入一个 Map
new的时候把i传进去
然后map.put("i",i);
之后这样的MyActionEvent就能通用于你遇到的类似情况了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯