3

I understand that when you add/remove a component, you need to revalidate() and then repaint(). However, I am changing the state of my polygon. Initially, the image is shown, however when I press the left and right keys, the image does not move. If I move the window, the gui is updated. Why doesn't it update as I press the keys?

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);
        }
    }
}
Simon Kuang
  • 3,870
  • 4
  • 27
  • 53
  • whole code is wrong designed for AWT Component not for Swing JComponent, there are changes, please whats canvas and ter.draw(canvas); – mKorbel Jun 17 '13 at 05:52
  • This post related to [Motion Using the Keyboard](http://tips4java.wordpress.com/2013/06/09/motion-using-the-keyboard/), might be of interest to you by @camickr – nIcE cOw Jun 18 '13 at 10:23

1 Answers1

6

Call repaint(); after ter.moveR();moveL() in your listener.

Additionally I would recommentd to use KeyBindings rather than KeyListener

StanislavL
  • 56,971
  • 9
  • 68
  • 98