// Dies ist ein Applet, muss also aus einer HTML-Seite im Browser // gestartet werden. import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.print.*; import java.lang.Double; public class MultiGUI extends Applet implements MouseListener,WindowListener,ActionListener,ItemListener,MouseMotionListener { double zahl; public static TextField textfield; public static Font meinfont; public static Label label; public static Label label2; public static Label label3; public static Label label4; public static Label label5; public static Button button; public static Frame f; public static Applet a; public static Checkbox r1; public static Checkbox r2; public static CheckboxGroup radio; public static boolean mwst=false; public static void main(String[] args) { Frame f = new Frame("MultiGUI"); f.setSize(800,600); // Größe ändern (breite, höhe) f.setVisible(true); // Fenster sichtbar machen a = new MultiGUI(); // Applet-Context holen f.add(a); // Applet-Eigenschaften zum Fenster hinzufügen // "Schließen"-Knopf: // Verweis auf die in dieser Klasse definierten WindowAdapter-Mehoden f.addWindowListener((MultiGUI)a); // Maus-Events, // Verweis auf die in dieser Klasse definierten MouseAdapter-Mehoden f.addMouseListener((MultiGUI)a); a.init(); // paint(g); wird hier nicht gebraucht. a.start(); f.setVisible(true); // Fenster und Buttons sichtbar machen } // Ende Applikation, ab hier Applet-Stuff. // paint() entspricht dem "main" bei Applikationen, wird aber // _jedesmal_ beim Zeichnen/Refresh des Applet aufgerufen. // Graphics g wird vom Browser geliefert und hat die Größe des // width=... und height=... Kontextes im APPLET-Tag in der // HTML-Datei. public void paint(Graphics g) { } // Hier ausnahmsweise leer. // init() wird nur einmalig zu Beginn aufgerufen public void init() { // Layout in 2 Zeilen a 4 Spalten // setLayout(new GridLayout(2, 4)); setLayout(null); // freies Layout mit setBounds() meinfont = new Font("SansSerif",Font.BOLD,16); //1. Zeile label = new Label("Anzahl der Benutzer des Programms:"); label.setFont(meinfont); label.setBounds(10,10,400,30); add(label); textfield = new TextField("Bitte eintragen",20); textfield.setFont(meinfont); textfield.setBounds(430,10,280,30); // s.o. add(textfield); textfield.addActionListener(this); //2. Zeile label2 = new Label("Preis Fremdlizenzierung je Benutzer:"); label2.setFont(meinfont); label2.setBounds(10,50,400,30); add(label2); TextField textfield2 = new TextField("Bitte eintragen",20); textfield2.setFont(meinfont); textfield2.setBounds(430,50,280,30); // s.o. add(textfield2); textfield2.addActionListener(this); //3. Zeile label3 = new Label("Geschätzte Anzahl an Programmierstunden:"); label3.setFont(meinfont); label3.setBounds(10,90,400,30); add(label3); TextField textfield3 = new TextField("Bitte eintragen",20); textfield3.setFont(meinfont); textfield3.setBounds(430,90,280,30); // s.o. add(textfield3); textfield3.addActionListener(this); //4. Zeile label4 = new Label("Preis je Programmierstunde:"); label4.setFont(meinfont); label4.setBounds(10,130,400,30); add(label4); TextField textfield4 = new TextField("Bitte eintragen",20); textfield4.setFont(meinfont); textfield4.setBounds(430,130,280,30); // s.o. add(textfield4); textfield4.addActionListener(this); radio = new CheckboxGroup(); r1 = new Checkbox("Mit MwSt. berechnen",radio,true); r2 = new Checkbox("Ohne MwSt. berechnen",radio,true); r1.setFont(meinfont); r2.setFont(meinfont); r1.setBounds(10,170,200,30); r2.setBounds(250,170,200,30); add(r1); add(r2); r1.addItemListener(this); r2.addItemListener(this); button = new Button("Berechnen"); button.setFont(meinfont); // Der Button soll 10 Punkte vom linken, 10 vom rechten // Rand entfernt sein, und 80 Pixel breit, 20 Pixel // hoch. button.setBounds(10,210,400,30); add(button); button.addActionListener(this); // Mausbewegungs-Listener einschalten. addMouseMotionListener(this); } // Ende init() // ActionListener für "Eingabefeld verändert": public void actionPerformed(ActionEvent e) { if (source == button && mwst == true) { zahl = Double.parseDouble(textfield.getText()); zahl*=1.19; Label label5 = new Label(""+zahl); label5.setFont(meinfont); label5.setBounds(10,260,400,30); add(label5); } else if (source == button && mwst == false) {zahl = Double.parseDouble(textfield.getText()); label5 = new Label(""+zahl); label5.setFont(meinfont); label5.setBounds(10,260,400,30); add(label5); } } public void itemStateChanged(ItemEvent e) { if (r1.getSelectedObjects() == null) { mwst = false; } else { mwst = true; } } public void mouseMoved(MouseEvent e) { } public void mouseDragged(MouseEvent e) { } // Klick auf "Schließen"-Button beendet das Programm public void windowClosing(WindowEvent e) { System.exit(0); } // Mausklick ins Fenster beendet das Programm ebenfalls. public void mouseClicked(MouseEvent e) { } // Diese Events werden ignoriert. public void windowOpened(WindowEvent e) { System.out.println("Fenster wurde geöffnet.");} public void windowClosed(WindowEvent e) { System.out.println("Fenster wurde geschlossen."); } public void windowIconified(WindowEvent e) { System.out.println("Fenster wurde ikonifiziert."); } public void windowDeiconified(WindowEvent e) { System.out.println("Fenster wurde wiederhergestellt, Inhalt neu zeichnen."); } public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }