Java增加修改一个方法_在一个void方法里面改变一个变量值以便在Java以外使用?...

在代码中,您使用的是局部变量x

JButton btn1 = new JButton("Button 1");

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

final String x = "1";

textField1.setText(x);

}

});

这个变量不会在内部类方法ActionListener.actionPerformed你声明之外存在。

您需要在符合您需要的范围内声明您的变量。

在这种情况下,您需要使用变量实例(请参阅下面的注释),因此在方法initialize之外声明String x要成为实例的一部分。

String x; //instance variable to be shared

private void initialize() {

...

JButton btn1 = new JButton("Button 1");

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

x = "1";

textField1.setText(x);

}

});

JButton btn2 = new JButton("Button 2");

btn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

textField2.setText(x);

}

});

}

注意:你不能简单地把它放在initialize方法,因为你需要把它作为final内部类内部使用,但你是如此,不可能在一个值设置为它你的情况。

PS:

只需注意你的initialize方法

String x = "0";

JButton btn1 = new JButton("Button 1");

btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String x = "1";

textField1.setText(x);

}

});

在点击方法的阴影String x,这不会使用,这是目前"0"的x,这将是一个完全地不同实例(即使命名相同)。所以您将需要删除该声明,因为您将隐藏刚才声明的实例变量。

但简短描述将是:

如果存在与在范围接近相同名称的另一个变量的变量被遮挡

一个小例子,以显示此阴影将是

public class Main {

String x = "a";

public static void main(String[] args) {

new Main();

}

public Main(){

System.out.println(x); //"a"

String x = "b";

System.out.println(x); //"b"

new Thread(new Runnable() {

public void run() {

String x = "c";

System.out.println(x); //"c"

}

}).start();

System.out.println(x); //"b"

}

public void method(){

System.out.println(x); //"a"

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值