화살표 키를 사용하여 자바 스윙 창에서 원을 움직이는 프로그램을 만들려고합니다. 키 바인딩이 정상적으로 작동하지만 원을 표시 할 때 항상 문제가 있습니다. 코드는 다음과 같습니다.자바 스윙 창에서 모양의 움직임을 제어 할 때의 문제
public class ShapesMove extends JFrame{
public static int x = 40;
public static int y = 40;
public static void main(String[] args){
final JFrame frame = new JFrame("Movement of 2d Shapes");
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) frame.getContentPane();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Action actionRight = new AbstractAction(){
public void actionPerformed(ActionEvent actionRightEvent){
x++;
}
};
Action actionLeft = new AbstractAction(){
public void actionPerformed(ActionEvent actionLeftEvent){
x--;
}
};
Action actionUp = new AbstractAction(){
public void actionPerformed(ActionEvent actionUpEvent){
y++;
}
};
Action actionDown = new AbstractAction(){
public void actionPerformed(ActionEvent actionDownEvent){
y--;
}
};
KeyStroke right = KeyStroke.getKeyStroke("RIGHT");
KeyStroke left = KeyStroke.getKeyStroke("LEFT");
KeyStroke up = KeyStroke.getKeyStroke("UP");
KeyStroke down = KeyStroke.getKeyStroke("DOWN");
InputMap inputMap = content.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(right, "RIGHT");
inputMap.put(left, "LEFT");
inputMap.put(up, "UP");
inputMap.put(down, "DOWN");
content.getActionMap().put("RIGHT", actionRight);
content.getActionMap().put("LEFT", actionLeft);
content.getActionMap().put("UP", actionUp);
content.getActionMap().put("DOWN", actionDown);
}
public void draw(Graphics g){
g.drawOval(x, y, 60, 60);
}
}
모든 올바른 모듈이 있기 때문에 가져 오기 라인이 포함되지 않았습니다. 컴파일은 항상 정상적으로 진행되지만 실행하면 원이 표시되지 않습니다. 나는 그 자신의 분리 된 거짓말과 그 원이 내가 그것을 만났을 때 나타나는 위로 향하는 표시에 대해 같은 코드를 시험해 보았다. 그래서 나는 무엇을 여기에서 잘못하고 있냐?
무승부 란? – Dodd10x