Fenster mittig auf dem Bildschirm positionieren (Java)

Aus Byte-Welt Wiki
Version vom 11. Oktober 2008, 15:54 Uhr von Pcworld (Diskussion | Beiträge) (setLocationRelativeTo in Link geändert, da ansonsten Sprung zu Methode nicht funktioniert)
Zur Navigation springenZur Suche springen

Am Beispiel der Klasse MyFrame, die von Vorlage:API(Swing) erbt, soll demonstriert werden, wie ein Programmfenster auf einfache Weise auf dem Bildschirm zentriert werden kann.
Dazu zunächst folgender Code:

<code=java>public class MyFrame extends JFrame {

  public MyFrame(String title) {
     super(title);
     setSize(600, 400); //Dimensionen des Fensters festlegen
     setLocationRelativeTo(null); //Fenster zentrieren
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }


  public static void main(String[] args) {
     new MyFrame("Title").setVisible(true);
  }

}</code=java>

setLocationRelativeTo(java.awt.Component) wurde zum ersten Mal in Java 1.4 in Vorlage:APIimplementiert und kann somit in bzw. für Klassen verwendet werden, die von Vorlage:APIerben. Wichtig bei ihrer Verwendung ist die Reihenfolge der Anweisungen. Der Aufruf der setLocationRelativeTo()-Methode darf erst nach der Dimensionierung z.B. mit setSize() oder pack() des Programmfensters erfolgen, da sie ihre Funktion sonst nicht erfüllen kann. Der setLocationRelativeTo()-Methode kann statt null eine Referenz auf eine Component übergeben werden. Dann wird sich das Fenster relativ zu dieser Component positionieren.


In Java-Versionen vor Java 1.4 kann ein Programmfenster folgendermaßen auf dem Bildschirm zentriert werden: <code=java>public class MyFrame extends JFrame {

  public MyFrame(String title) {
     super(title);
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     int windowWidth = 800; //Breite des Programmfensters in Pixel
     int windowHeight = 600; //Höhe des Programmfensters in Pixel
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //Bildschirmdimensionen in Pixeln holen
     setBounds((screenSize.width-windowWidth)/2, (screenSize.height-windowHeight)/2, windowWidth, windowHeight);
  }


  public static void main(String[] args) {
     new MyFrame("Title").setVisible(true);
  }

}</code=java>