import java.awt.*; // Grafikfunktionen und GUI-Elemente import java.awt.event.*; // Ereignisse import java.applet.*; // Applet-Klasse // Die Klasse soll standalone und als Applet funktionieren // ActionListener soll die Funktion zum Abfragen einer // Betätigung zur Verfügung stellen // ItemListener stellt die Funktion itemStateChanged zur Verfügung public class GUI_PopupMenu extends Applet implements ActionListener,ItemListener { // showGUI() wird später definiert, und enthält die GUI-Elemente, // die wahlweise in main() oder init() verwendet werden // init() wird aufgerufen, wenn das Programm als Applet läuft public void init(){ showGUI(); } // main() wird bei Standalone-Betrieb aufgerufen, und muss erst mal // ein Fenster öffnen. public static void main(String[] args){ Frame frame = new Frame("GUI in Java"); // Fenster-Objekt frame.setSize(800,600); // Applet-Contect erzeugen, damit die Applet-Funktionen // ebenfalls in der Standalone-Version aufgerufen werden können GUI_PopupMenu applet = new GUI_PopupMenu(); // ist ein Applet! frame.add(applet); // applet ins Fenster setzen // Wir möchten das Fenster schließen können frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} }); // Jetzt sind wird da angekommen, wo wir mit Browser und Applet auch wären. applet.init(); // Init aufrufen aus dem Applet applet.start(); // Applet starten, damit es losläuft frame.setVisible(true); // Ab jetzt sichtbar } public void showGUI(){ Choice choice = new Choice(); choice.add("Erster Eintrag"); choice.add("Zweiter Eintrag"); choice.add("Dritter Eintrag"); choice.addItemListener(this); // Funktion siehe unten add(choice); } // Wird ausgeführt, wenn ein Element betätigt wurde public void actionPerformed(ActionEvent e){ printText(e.toString(), 350); } // Wird ausgeführt, wenn ein Menüeintrag ausgewählt wird public void itemStateChanged(ItemEvent e){ printText(e.toString(), 350); } // Zeichne Text an die Position y im Fenster public void printText(String text, int ypos){ Graphics g = getGraphics(); g.clearRect(10,ypos-40,780,80); // Alten Text löschen g.drawString(text, 10, ypos); } }