Почему мой jFrame обновляется только после изменения размера окна?
Я понимаю, что когда вы добавляете / удаляете компонент, вам нужноrevalidate()
а потомrepaint()
, Однако я меняю состояние своего многоугольника. Первоначально изображение отображается, однако, когда я нажимаю левую и правую клавиши, изображение не перемещается. Если я перемещаю окно, графический интерфейс обновляется. Почему нетон обновляется при нажатии клавиш?
public class Terminos {
private LeftTermin ter;
private String[] commands = { "UP", "DOWN", "RIGHT", "LEFT" };
public Terminos() {
initComp();
}
public void initComp() {
JFrame jFrame = new JFrame();
jFrame.setSize(500, 500);
Component pane = new myPanel();
jFrame.add(pane);
ter = new LeftTermin(200, 200);
jFrame.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
System.out.println("r");
ter.moveR();
// Right arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
System.out.println("l");
ter.moveL();
// Left arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("u");
// Up arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
// Down arrow key code
System.out.println("d");
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
});
jFrame.revalidate();
jFrame.setVisible(true);
}
class myPanel extends JPanel {
@Override
public void paintComponent(Graphics canvas) {
super.paintComponent(canvas);
ter.draw(canvas);
}
}
}