1
현재 필자의 KeyEvent에서 내 사각형의 위치를 업데이트하려고하지만 다른 클래스에서의 paintComponent 메소드를 호출하는 방법 또는이자바 JFrame의 페인트
페인트 클래스를 달성하는 방법을 잘 모릅니다
package com.raggaer.frame;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Elements extends JPanel {
public Elements() {
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(250, 250, 10, 10);
}
public Dimension getPreferredSize() {
return new Dimension(500, 500);
}
}
그리고 내 리스너 클래스
package com.raggaer.frame;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Listener implements KeyListener {
public void keyPressed(KeyEvent e) {
System.out.println(e.getExtendedKeyCode());
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void paintComponent(Graphics g) {
g.drawRect(10, 10, 20, 20);
}
}
나는 paintComponent에라는 리스너 클래스 내부의 방법을 추가하는 시도하지만 이것을 달성하는 방법을 알고 .. 그래픽 객체를 해달라고 전달해야합니다.
변수를 사용하여 직사각형을 그릴 생각하고 그 변수를 수정하는 keyevent하지만 그것을 할 올바른 방법이 있는지 모르겠다.
왜 KeyBinding을 사용하는 것이 더 좋습니까? –
@AlvaroCarvajalNakosmai : [KeyListener Tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html)에 따라 : ""특정 키에 대한 특수 반응을 정의하려면 a 대신 키 바인딩을 사용하십시오. "Key Bindings는 KeyListeners의 상위 레벨 구조이며, 선택 키를 눌러 사각형을 움직이려면 이동하는 길입니다. 또한 KeyListeners와 마찬가지로 포커스 문제에 대해 그렇게 걱정할 필요가 없습니다. –