2016-05-30 14 views
2

Ich mache ein Programm, das einen Kreis auf einem JFrame zeichnet. Ich möchte das Programm mit dem Kreis in der Mitte des Bildschirms starten, so dass selbst wenn ich die Größe des JFrame-Fensters ändere, es immer noch zentriert ist. Wie würde ich es tun? Ich habe viel geschaut, aber nichts gefunden, was für mich funktioniert. Der Code ist unten. Danke im Voraus!Wie kann ich ein gezeichnetes Objekt in einem JFrame zentrieren?

import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class ImageFrame extends JFrame { 
    private static final long serialVersionUID = 1L; 

    int width = 40; 
    int height = 40; 
    int x = 160; 
    int y = 70; 

    JPanel panel = new JPanel() { 
     private static final long serialVersionUID = 1L; 
     public void paintComponent(Graphics g) { 
      super.paintComponents(g); 
      g.drawOval(x, y, width, height); 
      } 
    }; 

    public ImageFrame() { 
     add(panel); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(400, 300); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 
} 

Antwort

2

Dies ist ein einfaches mathematisches Problem. Teilen Sie den Unterschied zwischen der Behälterbreite und dem Kreis width durch 2, um die x-Koordinate für drawOval zu lokalisieren. Tun Sie dasselbe für die height für die y-Koordinate.

+0

Wie bekomme ich die Containerbreite und -höhe? Tut mir leid, wenn das super einfach ist. – LAD

+0

'getWidth()' und 'getHeight()' jeweils ...... :) – Reimeus

+0

... wie im [javadoc] (https://docs.oracle.com/javase/8/docs/api /javax/swing/JPanel.html) ... – Reimeus

Verwandte Themen