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());
我在最后一行显示“受控球。无法从静态上下文中引用”的错误。
当我尝试以下技术而不是调用stop()方法时,我只是更改了需要更改的值:
stop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
x= 0;
y = 0;
}
});
我从静态上下文中无法引用错误非静态字段'x'...
问题是,从主要方法中,如何更改在另一种方法中声明的x和y的值?
答案 0 :(得分:0)
有几种方法可以解决此问题。一个好的建议是可能创建一个自定义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));
这应该有助于您组织代码并保持其清洁和可维护。