Fenster mittig auf dem Bildschirm positionieren (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K (setLocationRelativeTo in Link geändert, da ansonsten Sprung zu Methode nicht funktioniert)
K
 
(13 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Am Beispiel der [[Klasse]] MyFrame, die von {{API|javax/swing/JFrame|javax.swing.JFrame}}(Swing) erbt, soll demonstriert werden, wie ein Programmfenster auf einfache Weise auf dem Bildschirm zentriert werden kann.<br>
+
Am Beispiel der [[Klasse]] MyFrame, die hier einen {{JAPI|javax.swing.JFrame}} (Swing) verwendet, soll demonstriert werden, wie ein Programmfenster auf einfache Weise auf dem Bildschirm zentriert werden kann.
 +
 
 
Dazu zunächst folgender Code:
 
Dazu zunächst folgender Code:
  
<code=java>public class MyFrame extends JFrame {
+
=Mit Java bis einschließlich Version 1.3=
 +
 
 +
In Java-Versionen vor Java 1.4 kann ein Programmfenster folgendermaßen auf dem Bildschirm zentriert werden:
 +
<syntaxhighlight lang="java">public class MyFrame {
  
 
   public MyFrame(String title) {
 
   public MyFrame(String title) {
 +
      JFrame frame = new JFrame(title);
 +
      frame.setDefaultCloseOperation(JFrame.DISPOSE_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
 +
      frame.setBounds((screenSize.width-windowWidth)/2, (screenSize.height-windowHeight)/2, windowWidth, windowHeight);
 +
      frame.setVisible(true);
 +
  }
  
       super(title);
+
  public static void main(String[] args) {
 +
       SwingUtilities.invokeLater(new Runnable() {
 +
          public void run() {
 +
              new MyFrame("Byte-Welt.net");
 +
          }
 +
      });
 +
  }
 +
}</syntaxhighlight>
  
      setSize(600, 400); //Dimensionen des Fensters festlegen
 
  
      setLocationRelativeTo(null); //Fenster zentrieren
+
=Mit Java ab Version 1.4=
  
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+
<syntaxhighlight lang="java">public class MyFrame {
  
 +
  public MyFrame(String title) {
 +
      JFrame frame = new JFrame(title);
 +
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 +
      frame.setSize(800, 600);
 +
      frame.setLocationRelativeTo(null);
 +
      frame.setVisible(true);
 
   }
 
   }
 
 
  
 
   public static void main(String[] args) {
 
   public static void main(String[] args) {
 
+
      SwingUtilities.invokeLater(new Runnable() {
      new MyFrame("Title").setVisible(true);
+
          public void run() {
 
+
              new MyFrame("Byte-Welt.net");
 +
          }
 +
      });
 
   }
 
   }
}</code=java>
+
}</syntaxhighlight>
  
[http://java.sun.com/javase/6/docs/api/java/awt/Window.html#setLocationRelativeTo(java.awt.Component) setLocationRelativeTo(java.awt.Component)] wurde zum ersten Mal in Java 1.4 in {{API|java/awt/Window|java.awt.Window}}implementiert und kann somit in bzw. für Klassen verwendet werden, die von {{API|java/awt/Window|Window}}erben.
+
[http://java.sun.com/javase/6/docs/api/java/awt/Window.html#setLocationRelativeTo(java.awt.Component) setLocationRelativeTo(java.awt.Component)] wurde zum ersten Mal in Java 1.4 in {{JAPI|java.awt.Window}} implementiert und kann somit in bzw. für Klassen verwendet werden, die von {{JAPI|Window}} erben.
 
Wichtig bei ihrer Verwendung ist die Reihenfolge der Anweisungen. Der Aufruf der <i>setLocationRelativeTo()</i>-Methode darf erst nach der Dimensionierung z.B. mit <i>setSize()</i> oder <i>pack()</i> des Programmfensters erfolgen, da sie ihre Funktion sonst nicht erfüllen kann.
 
Wichtig bei ihrer Verwendung ist die Reihenfolge der Anweisungen. Der Aufruf der <i>setLocationRelativeTo()</i>-Methode darf erst nach der Dimensionierung z.B. mit <i>setSize()</i> oder <i>pack()</i> des Programmfensters erfolgen, da sie ihre Funktion sonst nicht erfüllen kann.
 
Der <i>setLocationRelativeTo()</i>-Methode kann statt <i>null</i> eine Referenz auf eine Component übergeben werden. Dann wird sich das Fenster relativ zu dieser Component positionieren.
 
Der <i>setLocationRelativeTo()</i>-Methode kann statt <i>null</i> eine Referenz auf eine Component übergeben werden. Dann wird sich das Fenster relativ zu dieser Component positionieren.
  
 +
==Weiterführende Links==
 +
*[http://wiki.byte-welt.net/wiki/Warum_man_nicht_von_JFrame/JDialog_erben_sollte Warum man nicht von JFrame/JDialog erben sollte]
 +
*[http://wiki.byte-welt.net/wiki/Best%C3%A4tigung_vor_Programmende_%28Java%29 Bestätigung vor Programmende]
  
 
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>
 
[[Kategorie:Java]]
 
 
[[Kategorie:Swing]]
 
[[Kategorie:Swing]]

Aktuelle Version vom 6. Dezember 2018, 14:02 Uhr

Am Beispiel der Klasse MyFrame, die hier einen javax.swing.JFrame (Swing) verwendet, soll demonstriert werden, wie ein Programmfenster auf einfache Weise auf dem Bildschirm zentriert werden kann.

Dazu zunächst folgender Code:

Mit Java bis einschließlich Version 1.3

In Java-Versionen vor Java 1.4 kann ein Programmfenster folgendermaßen auf dem Bildschirm zentriert werden:

public class MyFrame {

   public MyFrame(String title) {
      JFrame frame = new JFrame(title);
      frame.setDefaultCloseOperation(JFrame.DISPOSE_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
      frame.setBounds((screenSize.width-windowWidth)/2, (screenSize.height-windowHeight)/2, windowWidth, windowHeight);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
          public void run() {
              new MyFrame("Byte-Welt.net");
          }
      });
   }
}


Mit Java ab Version 1.4

public class MyFrame {

   public MyFrame(String title) {
      JFrame frame = new JFrame(title);
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.setSize(800, 600);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
          public void run() {
              new MyFrame("Byte-Welt.net");
          }
      });
   }
}

setLocationRelativeTo(java.awt.Component) wurde zum ersten Mal in Java 1.4 in java.awt.Window implementiert und kann somit in bzw. für Klassen verwendet werden, die von Window erben. 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.

Weiterführende Links