gpt4 book ai didi

java - 将 Action 监听器添加到静态上下文

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:29 26 4
gpt4 key购买 nike

 public static void main(String[] args) {
ControlledBall ball2 = new ControlledBall(12,2);
JFrame window = new JFrame("Controlled Ball");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JButton stop = new JButton("Stop");
stop.setSize(4,400);
stop.setVisible(true);
stop.setText("Stop");
stop.addActionListener(new Action());

我在最后一行收到一个错误,提示“controlball.this 无法从静态上下文中引用”

当我尝试以下技术而不是调用 stop() 方法时,我只是更改需要更改的值:

stop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
x= 0;
y = 0;
}
});

我收到错误非静态字段“x”无法从静态上下文引用...

问题是,在 main 方法中,我如何更改在另一个方法中声明的 x 和 y 的值?

最佳答案

有多种方法可以解决此问题。一个好的建议是创建一个自定义 ActionListener 来保存对要更改的对象的引用。例如,您可以:

class StopListener implements ActionListener {

private ControlledBall ball;

public StopListener(ControlledBall ball) {
this.ball = ball;
}

@Override
public void actionPerformed(ActionEvent e) {
ball.stop(); // sets x and y to zero
}
}

然后您可以实例化该类并将其用作 ActionListener:

stop.addActionListener(new MyListener(ball2)); 

这应该可以帮助您组织代码并保持其整洁和可维护。

关于java - 将 Action 监听器添加到静态上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029779/

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