1
내 키가 현재 나는 거의
package com.raggaer.frame;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class Elements extends JPanel {
private static int y = 250;
public Elements() {
this.getInputMap().put(KeyStroke.getKeyStroke("UP"), "up");
this.getActionMap().put("up", new Listener("up"));
this.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "down");
this.getActionMap().put("down", new Listener("down"));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(250, this.y, 10, 10);
}
public Dimension getPreferredSize() {
return new Dimension(500, 500);
}
public static void setY(int cord) {
y += cord;
// Cant access repaint()
}
}
것을 달성 그리고이
package com.raggaer.frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.AbstractAction;
public class Listener extends AbstractAction {
private String code;
//final Elements game = new Elements();
public Listener(String order) {
this.code = order;
}
public void actionPerformed(ActionEvent e) {
System.out.println(this.code);
Elements.setY(1);
}
}
은 현재 모든 것을 내가 그나마 것을 제외하고 작동 내 리스너 클래스를 눌렀을 때 내 사각형을 업데이트 할
직사각형의 y 위치를 업데이트하는 방법을 알고, 정적 변수를 사용하려고했지만 그다음 repaint() 메서드를 호출 할 수 없습니다.
Worked. 그래서 나는 정적 인 것을 항상 피해야 만합니까? –
@AlvaroCarvajalNakosmai : 권장 사항으로 변경을 참조하십시오. 적절하게 필요한 곳을 제외하고는 통계를 피해야합니다. 이러한 상황 중 하나가 아닙니다. –