Code-Beispiele mit LayoutManager-Kombinationen: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
Zeile 3: Zeile 3:
 
[[Kategorie:Tutorials]]
 
[[Kategorie:Tutorials]]
  
=Fenster mit BorderLayout und Buttons=
+
=Ausgangspunkt - ein einfaches Fenster=
 
Sehr oft braucht man Fenster für bspw. benutzerdefinierte Dialoge. {{JAPI|JFrame}} und {{JAPI|JDialog}} haben bereits von Hause aus ein [[BorderLayout]]. Wir brauchen also nicht explizit noch einen [[LayoutManager]] setzen.
 
Sehr oft braucht man Fenster für bspw. benutzerdefinierte Dialoge. {{JAPI|JFrame}} und {{JAPI|JDialog}} haben bereits von Hause aus ein [[BorderLayout]]. Wir brauchen also nicht explizit noch einen [[LayoutManager]] setzen.
  
Zeile 11: Zeile 11:
  
 
Sehen wir uns an, wie man derartige Dialoge aufbauen kann.
 
Sehen wir uns an, wie man derartige Dialoge aufbauen kann.
 
==Ein einfaches Fenster==
 
 
<syntaxhighlight lang=java>
 
<syntaxhighlight lang=java>
 
import java.awt.*;
 
import java.awt.*;
Zeile 42: Zeile 40:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
==Fenster mit BorderLayout und Buttons==
  
 
Nun möchten wir am unteren Fensterrand ein paar Standard-[[JButton|Buttons]] unterbringen. Dazu schreiben wir uns eine private [[Methode]], die wir in unsere Klasse ''StandardFrame'' einfügen.
 
Nun möchten wir am unteren Fensterrand ein paar Standard-[[JButton|Buttons]] unterbringen. Dazu schreiben wir uns eine private [[Methode]], die wir in unsere Klasse ''StandardFrame'' einfügen.
Zeile 56: Zeile 56:
 
Wenn wir das nun kompilieren und ausführen, werden wir an unserem Fenster keine Veränderung feststellen.
 
Wenn wir das nun kompilieren und ausführen, werden wir an unserem Fenster keine Veränderung feststellen.
  
Damit die Buttons auch noch dargestellt werden, fügen wir der Konstruktor-Methode noch den passenden Aufruf nach dem Initialisieren des JFrame hinzu.
+
Damit die Buttons auch noch dargestellt werden, fügen wir der Konstruktor-Methode noch den passenden Aufruf nach dem Initialisieren des JFrame und vor der ''setVisible()''-Methode hinzu.
  
 
<syntaxhighlight lang=java>
 
<syntaxhighlight lang=java>

Version vom 6. Mai 2018, 11:02 Uhr


Ausgangspunkt - ein einfaches Fenster

Sehr oft braucht man Fenster für bspw. benutzerdefinierte Dialoge. JFrame und JDialog haben bereits von Hause aus ein BorderLayout. Wir brauchen also nicht explizit noch einen LayoutManager setzen.

Hier mal ein JFrame (kein Dialog):

Standard-Frame.png

Sehen wir uns an, wie man derartige Dialoge aufbauen kann.

import java.awt.*;
import javax.swing.*;

public class StandardFrame {
   public StandardFrame() {
      Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
      JFrame frame = new JFrame("Standard-Hauptfenster");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.setSize(size.width * 50 / 100, size.height * 50 / 100);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      } catch(Exception e) {
         System.err.println(e);
      }

      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            new StandardFrame();
         }
      });
   }
}

Fenster mit BorderLayout und Buttons

Nun möchten wir am unteren Fensterrand ein paar Standard-Buttons unterbringen. Dazu schreiben wir uns eine private Methode, die wir in unsere Klasse StandardFrame einfügen.

private JPanel createButtonPanel() {
   JPanel panel = new JPanel();
   panel.add(new JButton("Abbrechen"));
   panel.add(new JButton("OK"));
   return panel;
}

Wenn wir das nun kompilieren und ausführen, werden wir an unserem Fenster keine Veränderung feststellen.

Damit die Buttons auch noch dargestellt werden, fügen wir der Konstruktor-Methode noch den passenden Aufruf nach dem Initialisieren des JFrame und vor der setVisible()-Methode hinzu.

frame.add(createButtonPanel(), BorderLayout.SOUTH);

Damit setzen wir unser Panel mit den Buttons und den unteren Bereich des JFrames.

Das Ergebnis sind dann so aus:

Standard-Frame mit Buttons.png