Das Rahmenprogramm unterscheidet sich nur unwesentlich von unserem bisherigen Grundapplet aus dem Kapitel 5.
Damit im Menüteil links die Buttons ordentlich aussehen, fügen wir dort als Layoutmanager ein Gridlayout ein. Das ist ein rechteckiges Schema (Tabelle) aus Zeilen und Spalten. Hier wählen wir ein Gridlayout mit einer Spalte und 10 Zeilen:
pnMenü.setLayout(new GridLayout(10,1));
Nun benötigen wir, damit die Buttons nicht vollständig die Felder der Tabelle ausfüllen, pro Button ein Panel. Diese nennen wir
Panel pnZeichnen = new Panel(); Panel pnDelete = new Panel();
Dazu benötigen wir nun noch die notwendigen Buttons:
Button btZeichnen = new Button("Zeichnen"); Button btDelete = new Button("Löschen");
In der Methode init() wird nun erst das GridLayout definiert, dann die Panels hinzugefügt und dann in die Panels die Buttons eingefügt:
pnMenü.setLayout(new GridLayout(10,1)); pnMenü.add(pnZeichnen); pnZeichnen.add(btZeichnen); pnMenü.add(pnDelete); pnDelete.add(btDelete);
Die Buttons werden dann mit einem ActionListener gekoppelt und der actionPerformed()-Methode werden die entsprechenden Abfragen für die Buttons hinzugefügt.
Das komplette Rahmenprogramm (Die Änderungen sind wieder in Rot gemacht!):
import java.awt.*; import java.awt.event.*; import java.applet.*; public class Hexenhaus extends Applet implements ActionListener { Label lbTitel = new Label("Zeichnen eines Hexenhauses"); Label lbCopyright = new Label("© 10/2000 by Ralph-Erich Hildebrandt - Konrad-Adenauer-Gymnasium Langenfeld"); Font ftTitel = new Font("Arial",Font.BOLD,16); Font ftCopyright = new Font("Arial",Font.PLAIN,11); Panel pnTitel = new Panel(); Panel pnMenü = new Panel(); Panel pnCopyright = new Panel(); Panel pnWork = new Panel(); Panel pnZeichnen = new Panel(); Panel pnDelete = new Panel(); Button btZeichnen = new Button("Zeichnen"); Button btDelete = new Button("Löschen"); public void init() { resize(640,480); setLayout(new BorderLayout()); //Titelzeile generieren add(pnTitel, BorderLayout.NORTH); pnTitel.setBackground(Color.blue); pnTitel.setForeground(Color.white); pnTitel.setFont(ftTitel); pnTitel.add(lbTitel); //Menübereich generieren add(pnMenü, BorderLayout.WEST); pnMenü.setBackground(Color.yellow); pnMenü.setLayout(new GridLayout(10,1)); pnMenü.add(pnZeichnen); pnZeichnen.add(btZeichnen); pnMenü.add(pnDelete); pnDelete.add(btDelete); btZeichnen.addActionListener(this); btDelete.addActionListener(this); //Copyrightzeile generieren add(pnCopyright, BorderLayout.SOUTH); pnCopyright.setBackground(Color.black); pnCopyright.setForeground(Color.white); pnCopyright.setFont(ftCopyright); pnCopyright.add(lbCopyright); //Arbeitsbereich generieren add(pnWork, BorderLayout.CENTER); } public void actionPerformed(ActionEvent event) { Object cmd = event.getSource(); if (cmd == btZeichnen) { } if (cmd == btDelete) { } } }