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;
}
}
}