从另一个类更改int值,更新JPanel

时间:2016-03-05 10:24:38

标签: java swing

当我按下特定键时,我想更新另一个类中的int值,并根据此更新的JPanel重新显示int

以下是我使用key_event

的类的代码
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); 
            }
});

这是我的课程,int应该更新:

public class Objects {

public int x = 10;
public int y = 10;  
public int height = 10; 
public int width = 10; 

public int val = 5;

public void dW(Graphics stift){

    stift.setColor(Color.RED);
    stift.fillRect(x, y, width, height);    
}
}

这是我的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_events实现switch case break语句会更好)。

0 个答案:

没有答案