Ellipse2D ändert Größe

raGe666

Mitglied
Hallo zusammen,

bin zurzeit dabei, mit Graphics rumzuspielen und hab dabei ein Testprogramm zum Zeichnen und Verschieben einer Ellipse2D geschrieben. Es funktioniert auch alles, nur ändert die Ellipse die Größe wenn ich diese verschiebe. Anfangs, bei Position 0, 0, ist die Ellipse rund. Wenn ich sie aber um 10 nach unten verschiebe, verzieht sie sich zusätzlich nach unten, sodass sie oval wird.
Weiß jemand warum das passiert?

Hier zunächst die main-Klasse, die die Gui erstellt:
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;

class Test implements Runnable {
    JFrame frame;
    JButton button1, button2, button3, button4;
    JPanel buttonPane, centerPane;
    MyPanel pane;
    MyListener listener;
    JLabel label;

    Border blackline;


    public static void main(String[] args) {
        Test test = new Test();
        SwingUtilities.invokeLater(test);
    }

    public void run() {
        createAndShowGUI();
    }

    public void createAndShowGUI() {
        blackline = BorderFactory.createLineBorder(Color.black);

        frame = new JFrame("GraphicsTest");
        pane  = new MyPanel();
        pane.setBackground(new Color(50, 50, 150));
        pane.setBorder(blackline);
        pane.setMaximumSize(new Dimension(300, 300));
        pane.setPreferredSize(new Dimension(250, 250));
        centerPane = new JPanel();
        centerPane.add(pane);
        buttonPane = new JPanel();
        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));
        listener = new MyListener(this);

        button1 = new JButton("Up");
        button2 = new JButton("Right");
        button3 = new JButton("Down");
        button4 = new JButton("Left");
        label   = new JLabel(pane.x + ", " + pane.y);

        button1.addActionListener(listener);
        button2.addActionListener(listener);
        button3.addActionListener(listener);
        button4.addActionListener(listener);

        buttonPane.add(button1);
        buttonPane.add(button2);
        buttonPane.add(button3);
        buttonPane.add(button4);
        buttonPane.add(label);


        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setLayout(new BorderLayout(5, 5));

        frame.add(centerPane, BorderLayout.CENTER);
        frame.add(buttonPane, BorderLayout.PAGE_END);

        frame.pack();
        frame.setVisible(true);
    }
}

Dann das eigene Panel mit der überschiebenen paintComponent():
[JAVA=72]class MyPanel extends JPanel {
int x;
int y;

public MyPanel() {
super();

x = 0;
y = 0;
}

public void paintComponent(Graphics g) {
System.out.println("paint at " + x + ", " + y);
Graphics2D g2 = (Graphics2D) g;
System.out.println("x before draw: " + x);
System.out.println("y before draw: " + y);
g2.draw(new Ellipse2D.Double(x, y, (x+50), (y+50)));
System.out.println("x after draw: " + x);
System.out.println("y after draw: " + y);
}
}[/code]

Und zuletzt der eigene Listener:
[JAVA=94]class MyListener implements ActionListener {
Test caller;

public MyListener(Test o) {
this.caller = o;
}


public void actionPerformed(ActionEvent evt) {
System.out.println("Before Change");
Object obj = evt.getSource();

if (obj.equals(caller.button1)) {
if (caller.pane.y >= 10) {
caller.pane.y = caller.pane.y - 10;
}
} else if (obj.equals(caller.button2)) {
if (caller.pane.x <= 290) {
caller.pane.x = caller.pane.x + 10;
}
} else if (obj.equals(caller.button3)) {
if (caller.pane.y <= 290) {
caller.pane.y = caller.pane.y + 10;
}
} else if (obj.equals(caller.button4)) {
if (caller.pane.x >= 10) {
caller.pane.x = caller.pane.x - 10;
}
}
System.out.println("Before repaint();");
caller.label.setText(caller.pane.x + ", " + caller.pane.y);
caller.frame.repaint();
System.out.println("After repaint();");
}
}[/code]
 

jgh

Top Contributor
du musst natürlich in der paintComponent von MyPanel die Größe der Elipse nicht ändern, sonst hast du diese (unerwünschten) Auswirkungen.

Java:
g2.draw(new Ellipse2D.Double(x, y, 50, 50));
die 50,50 geben die Breite, bzw. die Höhe des ungebenen Rechteckes an...wenn du diese vergrößerst, bzw. verkleinerst ändert sich natürlich die Elipse...

[edit] und den Button right nach links zu setzen, den Button left nach rechts... na ja, intuitiv ist was anderes :D [/edit]
 

jgh

Top Contributor
api lesen ;)

public Ellipse2D.Double(double x,
double y,
double w,
double h)

Constructs and initializes an Ellipse2D from the specified coordinates.

Parameters:
x - the X coordinate of the upper-left corner of the framing rectangle
y - the Y coordinate of the upper-left corner of the framing rectangle
w - the width of the framing rectangle
h - the height of the framing rectangle
Since:
1.2
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ellipse2d zum path hinzufügen AWT, Swing, JavaFX & SWT 4
Dit_ Ein Kreis als Graphics2D oder als Ellipse2D Objekt AWT, Swing, JavaFX & SWT 19
G Ellipse2D.Double funktioniert nicht AWT, Swing, JavaFX & SWT 3
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
K JavaFX Fenstergröße ändert sich (Gluon - SceneBuilder) AWT, Swing, JavaFX & SWT 23
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
S Look und Feel ändert sich nicht AWT, Swing, JavaFX & SWT 4
F JFrame nach Buttonklick 3 Sekunden warten, bevor es sich ändert AWT, Swing, JavaFX & SWT 2
V Labeltext ändert sich nicht in actionPerformed AWT, Swing, JavaFX & SWT 5
R LookAndFeel Nimbus ändert Programmausführung AWT, Swing, JavaFX & SWT 8
M Swing JScrollPane ändert ungewollt seine Größe AWT, Swing, JavaFX & SWT 2
K LookAndFeel Look And Feel ändert sich nicht AWT, Swing, JavaFX & SWT 8
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
A Swing TableCellRenderer ändert die Zeilenfarbe zu spät AWT, Swing, JavaFX & SWT 3
jemandzehage setResizable(false) ändert Größe des Contentpane AWT, Swing, JavaFX & SWT 4
E Swing JLabel ändert seine Position nach setText AWT, Swing, JavaFX & SWT 2
M JWindow schließen wenn Frame sich ändert AWT, Swing, JavaFX & SWT 2
B LayoutManager JLabel ändert GridBayLayout-Gewichtung AWT, Swing, JavaFX & SWT 2
M JTextArea ändert Schreibrichtung AWT, Swing, JavaFX & SWT 5
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
O Hgr- Farbe einer JTable ändert sich nicht AWT, Swing, JavaFX & SWT 11
G labeltext ändert sich nicht AWT, Swing, JavaFX & SWT 28
S JList inhalt ändert sich wie nennt sich ereignis/methode? AWT, Swing, JavaFX & SWT 3
S 1 Klick für JButton und Layout ändert sich AWT, Swing, JavaFX & SWT 14
L Button ändert eigenes Bild und Progressbar-Value nicht AWT, Swing, JavaFX & SWT 6
K JTextArea ändert Größe. AWT, Swing, JavaFX & SWT 3
S GUI ändert Größe AWT, Swing, JavaFX & SWT 9
R JTextField im GridBag ändert seine Größe nicht AWT, Swing, JavaFX & SWT 11
B JLabel ändert seine Position AWT, Swing, JavaFX & SWT 7
D CheckBox ändert Status nur, wenn sie FocusOwner ist AWT, Swing, JavaFX & SWT 2
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Yonnig JavaFX Größe von WebView an Content anpassen AWT, Swing, JavaFX & SWT 3
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
M Java FX größe der shapes anpassen AWT, Swing, JavaFX & SWT 0
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
Neumi5694 Größe von Komboboxen neu berechnen AWT, Swing, JavaFX & SWT 3
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
C Größe des Mauszeigers ermitteln AWT, Swing, JavaFX & SWT 5
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D JavaFX Alle Knöpfe auf die gleiche Größe AWT, Swing, JavaFX & SWT 14
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
F Gui weicht von Designpreview ab (kein fensterrahmen, andere größe) AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
M SWT ScrollPane Größe zu klein AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
S Swing JFrame hat nicht die Größe, die ich eingegeben habe AWT, Swing, JavaFX & SWT 3
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
T Swing Größe des Randes AWT, Swing, JavaFX & SWT 2
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
N JPanel größe wissen/festlegen vor dem Anzeigen AWT, Swing, JavaFX & SWT 3
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
G JavaFX Größe der Parentknoten AWT, Swing, JavaFX & SWT 5
R JPanel-Größe verändert sich nicht. Warum? AWT, Swing, JavaFX & SWT 5
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
A JPanel oder GridLayout Größe festsetzten AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
SimonRap Swing JFrame Größe zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Größe der JFrame Decorations herausfinden? AWT, Swing, JavaFX & SWT 4
O Swing Jpanel autom. auf JFrame Größe bringen AWT, Swing, JavaFX & SWT 6
M Swing JLabel mit fester größe nachträglich formatieren AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben