gpt4 book ai didi

java - 更改需要声明为final的局部变量的值

转载 作者:行者123 更新时间:2023-12-02 05:45:03 24 4
gpt4 key购买 nike

我一直在尝试更改 JButton 在 Action 监听器中的位置。但是,当我编译代码时,显示了 Localvariable isaccessed from inside class: need to beelasted final 错误。因此,我将位置变量声明为最终变量。问题是我需要更改位置变量的值,而只要它是最终的,这是不可能的。我该如何解决这个问题?

代码:

final int location =100;

JFrame f = new JFrame();
final JButton b1 = new JButton("character");

f.setVisible(true);
f.setSize(500,500);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setLayout( new FlowLayout());

f.add(b1);

b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
b1.setLocation(location,100);
location += 10; // cannot assign a value to final variable location
}
});

最佳答案

您正在尝试引用被单击的按钮。 ActionEvent 包含按钮事件的源。所以你的代码应该是:

//b1.setLocation(location,100);
JButton button = (JButton)e.getSource();
button.setLocation(button.getLocation() + 10, 100);

现在不需要位置变量。

只要有可能,您就应该使用事件源来获取对象。不要依赖实例变量。

关于java - 更改需要声明为final的局部变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com