import java.awt.*; import java.awt.event.*; // Lösung zu Aufgabe 4 public class Formular { public Formular(){ // Der Frame sollte hier "final" sein, da andere // Funktionen auf die Adresse zureifen müssen final Frame f = new Frame("Formular"); f.setSize(600,400); f.setResizable(false); // Größenänderung verhindern f.setVisible(true); // Wie immer: "Schließen"-Button belegen! f.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); // Das "null"-Layout erlaubt freie Positionierung // mit Hilfe der Funktion setBorders(x,y,breite,hoehe); f.setLayout(null); // Zeichensatz größer f.setFont(new Font("SansSerif",Font.BOLD,24)); // Die Aktionen, die bei Aktivierung der Bedienelemente // aktiv werden sollen: MouseListener ml = new MouseAdapter(){ public void mouseClicked(MouseEvent e){ ausgabe(f.getGraphics(), e); } }; ActionListener al = new ActionListener(){ public void actionPerformed(ActionEvent e){ ausgabe(f.getGraphics(), e); } }; ItemListener il = new ItemListener(){ public void itemStateChanged(ItemEvent e){ ausgabe(f.getGraphics(), e); } }; // Ein Button Button b = new Button("Ein Button"); // Position des Buttons festlegen: // 10 Pixel links und rechts Abstand, // 20 Pixel hoch b.setBounds(10,40,580,40); f.add(b); b.addMouseListener(ml); // Listener eintragen // Ein Textfeld TextField input = new TextField(); input.setBounds(300,80,290,40); f.add(input); input.addActionListener(al); // Ein Label (Beschriftung) Label input_info = new Label("Eingabetextfeld"); input_info.setBounds(10,80,280,40); f.add(input_info); // Aufklapp-Menü mit 3 Elementen Choice choice = new Choice(); choice.add("Erstes Element"); choice.add("Zweites Element"); choice.add("Drittes Element"); choice.setBounds(300,120,290,40); f.add(choice); choice.addItemListener(il); // Ein Label (Beschriftung) Label choice_info = new Label("Bitte auswählen: "); choice_info.setBounds(10,120,280,40); f.add(choice_info); // Eine Gruppe ANHÄNGIGER Buttons (CheckboxGroup) CheckboxGroup cg = new CheckboxGroup(); Checkbox r1 = new Checkbox("A", cg, false); r1.setBounds(290,160,280/3,40); f.add(r1); Checkbox r2 = new Checkbox("B", cg, false); r2.setBounds(290+280/3,160,280/3,40); f.add(r2); Checkbox r3 = new Checkbox("C", cg, false); r3.setBounds(290+280/3*2,160,280/3,40); f.add(r3); r1.addItemListener(il); r2.addItemListener(il); r3.addItemListener(il); // Ein Label (Beschriftung) Label cg_info = new Label("Radio-Boxen:"); cg_info.setBounds(10,160,280,40); f.add(cg_info); // Eine Gruppe UNANHÄNGIGER Buttons (Checkbox) Checkbox c1 = new Checkbox("A", false); c1.setBounds(290,200,280/3,40); f.add(c1); Checkbox c2 = new Checkbox("B", true); c2.setBounds(290+280/3,200,280/3,40); f.add(c2); Checkbox c3 = new Checkbox("C", false); c3.setBounds(290+280/3*2,200,280/3,40); f.add(c3); c1.addItemListener(il); c2.addItemListener(il); c3.addItemListener(il); // Ein Label (Beschriftung) Label c_info = new Label("Check-Boxen:"); c_info.setBounds(10,200,280,40); f.add(c_info); } // Soll die Event im Fenster darstellen public void ausgabe(Graphics g, Object o){ // Man KÖNNTE mit Graphics.drawString(text, x, y) // ins Fenster zeichnen, aber: Wie haben hier // keine Graphics-Umgebung. // Erst mal den alten Text löschen: g.setFont(new Font("SansSerif",Font.BOLD,10)); g.clearRect(10, 320, 590, 80); g.drawString(o.toString(), 10, 350); } public static void main(String[] args) { new Formular(); // Formular-Objekt erzeugen } }