Java verschieben eines Kreises in eine gui mit den Pfeiltasten

Ich versuche einen Kreis mit der linken, ein keyEvent. So weit, der Kreis ist gezeichnet am Fenster, aber es bewegt sich nicht linken! Ich fühle mich wie das problem, wo füge ich das Fenster () - Konstruktor, um die container. Das ist keine Ausgabe auf der Konsole, mir zu sagen, dass es funktioniert. Also ich denke nicht, dass es noch erreicht die KeyEvent-Klasse. Hier ist mein code:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import javax.swing.*;


public class Window extends JPanel {

    private static Ellipse2D.Double circle;

    public Window() {
        super();
        int width = 400;
        int height = 400;
        circle = new Ellipse2D.Double(0.5 * width, 0.9 * height,
                0.1 * width, 0.05 * height);
        addKeyListener(new MoveCircle());
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponents(g);
        Graphics2D brush = (Graphics2D) g;
        int width = getWidth();
        int height = getHeight();
        g.clearRect(0, 0, width, height);
        brush.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        brush.draw(circle);
    }

    public class MoveCircle implements KeyListener {

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("Working on top!");
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                System.out.println("Working on bottom!");
                circle.x++;
                repaint();
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            //TODO Auto-generated method stub
        }

        @Override
        public void keyTyped(KeyEvent e) {
            //TODO Auto-generated method stub
        }
    }

    public static void main(String[] args) {
        Window window = new Window();
        JFrame frame = new JFrame();
        Container container = frame.getContentPane();
        container.add(new Window());
        frame.addKeyEvent(window.new MoveCircle());
        frame.setSize(800, 700);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
}
InformationsquelleAutor user1198199 | 2012-03-15
Schreibe einen Kommentar