Shape bewegen

ganonlight

Mitglied
Also ich will einfach nur einer Shape eine neue Position zuweisen.
Ich habs schon gegoogled, aber entweder hab ichs nicht verstanden, oder es kam nicht das, was ich gemeint hab.
Wenn ich schreib:
Java:
Ellipse2D.Double e = new Ellipse2D.Double( xPos, yPos, breite, hoehe );
   e.y = 400;
Funktionierts ja ganz leicht, aber wenn ich schreib:
Java:
Shape e = new Ellipse2D.Double( xPos, yPos, breite, hoehe );
kann ich leider nicht einfach e.y = 400; benutzen.
Es wär für mein Projekt aber deutlich besser, wenn ich durch die Shape-Klasse möglichst allgemein bleibe.
 

André Uhres

Top Contributor
Hallo ganonlight,

Hier ist ein kleines Beispiel:

Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

class Zeichenfeld extends JPanel {

    private Shape shape = new Ellipse2D.Double(0, 0, 100, 60);
    private Point point;
    private final MouseListener listener = new MouseAdapter() {

        @Override
        public void mousePressed(final MouseEvent e) {
            point = e.getPoint();
            repaint();
        }
    };

    public Zeichenfeld() {
        addMouseListener(listener);
    }

    @Override
    protected void paintComponent(final Graphics g) {
        super.paintComponent(g);
        moveTo((Graphics2D) g, shape, point);
    }

    private void moveTo(final Graphics2D g2, final Shape shape,
            final Point point) {
        if (point != null) {
            AffineTransform oldTransform = g2.getTransform();
            g2.translate(point.x, point.y);
            g2.draw(shape);
            g2.setTransform(oldTransform);
        }
    }

    public static void main(final String... args) {
        Runnable gui = new Runnable() {

            public void run() {
                createAndShowGui();
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }

    private static void createAndShowGui() {
        Zeichenfeld zeichenfeld = new Zeichenfeld();
        JFrame f = new JFrame("Klicke bitte mit der Maus auf das Zeichenfeld");
        f.add(zeichenfeld);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.setSize(400, 300);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

Gruß,
André
 

AmunRa

Gesperrter Benutzer
Das Problem ist, dass Shape ein Interface ist.

Daher hat es keine Felder (so wie x,y) daher kannst du natürlich nicht auf x,y zugreifen.
 

André Uhres

Top Contributor
Allerdings stimmt die Aussage von AmunRa ("Das Problem ist, dass Shape ein Interface ist.") nicht so ganz.

Auch ein Interface kann nämlich Methoden zur Verfügung stellen, die auf Felder zugreifen, ohne selbst die Felder zu enthalten. In dem Fall ist es Aufgabe der Implementierungsklasse, in diesen Methoden auf tatsächliche Felder zuzugreifen.

Das Problem ist demnach nicht, dass Shape ein Interface ist, sondern dass das Shape Interface keine Methoden bereitstellt, mit denen wir bequem auf die Koordinaten zugreifen könnten.

Gruß,
André
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A "Gedankenlesen" Klasse Shape erstellen Java Basics - Anfänger-Themen 5
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
Helgon AWT EventQueue NPE bei Shape intersect Java Basics - Anfänger-Themen 2
G Shape um eigene Achse drehen Java Basics - Anfänger-Themen 2
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D wie kann man in Pong mit eclipse den schläger bewegen Java Basics - Anfänger-Themen 1
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
S ProgrammierHilfe dringend gesucht ( Icon bewegen) Java Basics - Anfänger-Themen 9
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
I in Richtung bewegen Java Basics - Anfänger-Themen 2
Franzi1001 ScrollBar lässt sich nicht bewegen Java Basics - Anfänger-Themen 4
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
Y Kreis auf einer Kreisbahn bewegen Java Basics - Anfänger-Themen 5
H Spieler bewegen :) Java Basics - Anfänger-Themen 6
R JTree bewegen Java Basics - Anfänger-Themen 6
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
J Durch 2-Dimensionales Array "bewegen" will nicht so recht hinhauen Java Basics - Anfänger-Themen 2
J Spieler bewegen Java Basics - Anfänger-Themen 3
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
G zwei Objekte bewegen - der eine bewegt sich nicht flüssig? Java Basics - Anfänger-Themen 10
F Objekt in Richtung eines anderen Objekts bewegen Java Basics - Anfänger-Themen 4
A Auto bewegen (mit SuM) Java Basics - Anfänger-Themen 27
K Bild mit Maus innerhalb eines Rahmens bewegen Java Basics - Anfänger-Themen 5
G Figuren bewegen-Aufgabe mit static Java Basics - Anfänger-Themen 9
D Kreis mit Pfeiltaste bewegen Java Basics - Anfänger-Themen 3
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
E JFrame Fenster bewegen Java Basics - Anfänger-Themen 8
F Bilder enfügen und Bewegen Java Basics - Anfänger-Themen 6
N OOP Objekte entlang Pfaden bewegen Java Basics - Anfänger-Themen 15
B Button bewegen Java Basics - Anfänger-Themen 8
H Grafik auf einem JPanel bewegen. Java Basics - Anfänger-Themen 7
L Balken mit Pfeiltasten bewegen Java Basics - Anfänger-Themen 3
P Fenster bewegen Java Basics - Anfänger-Themen 4
S Mehrere Bilder bewegen Java Basics - Anfänger-Themen 5
Spin Objekte bewegen lassen Java Basics - Anfänger-Themen 16
A grafik 2d Objekte mit der Maus bewegen Java Basics - Anfänger-Themen 4
N Objekte bewegen funktioniert nicht Java Basics - Anfänger-Themen 5
U Neuling: Hintergrund bewegen Java Basics - Anfänger-Themen 14
G Maus mit java bewegen Java Basics - Anfänger-Themen 6
W Jlabel bewegen Java Basics - Anfänger-Themen 8
B KeyListener (etwas bewegen) Java Basics - Anfänger-Themen 10
7 Benutzer kann Button bewegen Java Basics - Anfänger-Themen 4
H Bewegen einer Figur Java Basics - Anfänger-Themen 3
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
K striche die sich auf dem hintergrundbild bewegen Java Basics - Anfänger-Themen 10
J Bewegen durch das Labyrinth Java Basics - Anfänger-Themen 7
A Kreis mit gedrückter Maustaste bewegen. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben