Java 更改另一个类的int值,更新JPanel

Java 更改另一个类的int值,更新JPanel,java,swing,Java,Swing,当我按下一个特定的键时,我想更新另一个类中的int值,并基于此更新的int重新绘制JPanel 这是我为带有key\u事件的类编写的代码: frame.addKeyListener(new KeyListener(){ @Override public void keyPressed(KeyEvent e){ if(e.getKeyCode() == KeyEvent.VK_W){ dP.status = 1

当我按下一个特定的键时,我想更新另一个类中的
int
值,并基于此更新的
int
重新绘制
JPanel

这是我为带有
key\u事件的类编写的代码

frame.addKeyListener(new KeyListener(){
        @Override
        public void keyPressed(KeyEvent e){
            if(e.getKeyCode() == KeyEvent.VK_W){
                dP.status = 1;
                w.x = w.x; //pos.xC(pos.maxSize(frame));
                w.y = w.Y(w.y, -w.val);
                if ( w.y < 0) {
                    w.y = 0; 
                }
                frame.validate();
                dP.repaint(); 
                System.out.println("w.y: "+w.y); 
            }
});
这是我的
JPanel
课程:

public class DisplayPanel extends JPanel {

public Objects w = new Objects();

public int status = 0; 

public  void setUp(){
        this.setBackground(Color.WHITE);
    }

@Override
    protected void paintComponent(Graphics stift){
        super.paintComponent(stift);

        if (status == 0){
            stift.setColor(Color.RED);
            stift.drawLine(200, 200, 400, 200);
            stift.drawLine(200, 400, 300, 500);

            stift.setColor(Color.GREEN);
            stift.drawLine(200, 200, 2000, 200);
            stift.fillRect(w.x, w.y, w.width, w.height);    
        }

        while (status == 1){
            w.dW(stift); 
            break; 
        }
    }
}
第一次按键时,JPanel会被更新,w.x和w.y的值不会更新,它们保持为精确的10。我怎样才能改变这个


(PS:我知道最好为key_事件实现switch case break语句)

您在JPanel类的开始就初始化了w。我现在只是在猜测,但它看起来像是监听器中的w对象(似乎是设置在帧的某个位置?)是另一个。他们需要在同一个参考上工作。如果您定义了两次“public Object w”,那就已经错了。@Zi1mann显示Objects.X()和Objects.Y()的代码。您在这些访问器方法中做了什么?
public class DisplayPanel extends JPanel {

public Objects w = new Objects();

public int status = 0; 

public  void setUp(){
        this.setBackground(Color.WHITE);
    }

@Override
    protected void paintComponent(Graphics stift){
        super.paintComponent(stift);

        if (status == 0){
            stift.setColor(Color.RED);
            stift.drawLine(200, 200, 400, 200);
            stift.drawLine(200, 400, 300, 500);

            stift.setColor(Color.GREEN);
            stift.drawLine(200, 200, 2000, 200);
            stift.fillRect(w.x, w.y, w.width, w.height);    
        }

        while (status == 1){
            w.dW(stift); 
            break; 
        }
    }
}