@Klaus Lern- und Beispielprogramm GUI Java
Der Quelltext dürfte selbsterklärend sein. Aufgerufen werden muss die Klasse “KlausFrontend”
Die Dateien müssen im selben Verzeichnis liegen.
KlausBackend.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * Das Backend fuer das Lernprogramm * @author Lukas Schreiner */ public class KlausBackend { String message[] = new String[2]; /** * Speichert die Nachrichten * @author Lukas Schreiner */ public void setNachricht(){ message[0] = "<html>Klaus, das ist der erste Text.</html>"; message[1] = "<html>Und das ist der zweite Text.<br /> -> Verstanden?</html>"; } /** * Nachricht mit dem Index "number" zuruckgeben * @author Lukas Schreiner * @param integer number Die Indexnummer * @return String Der Text */ public String getNachricht(int number){ return message[number]; } public static void main(String args[]){ // Do nothing } } |
KlausFrontend.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | /** * Klaus' Lernprogramm * @author Lukas Schreiner */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class KlausFrontend extends JFrame implements ActionListener { JLabel txt; // Label, also auch reines Textfeld (kein Eingabe) JButton text_0, text_1, beenden; // Buttons, zum Klicken ;-) KlausBackend kb; // Das Backend ;-) /** * Konstruktor -> wird als erste Methode aufgerufen * @author Lukas Schreiner */ public KlausFrontend(){ this.getContentPane().setLayout(null); // Er soll einfach nicht layouten, das machen wir. this.initWindow(); // In der Methode werden alle relevante Dinge erledigt this.setTitle("Klaus Lernprogramm"); // Fenstertitel setzen this.setSize(320, 280); // Groesse des Fensters festlegen (1. Breite, 2. Hoehe) // Beim Klicken auf das X-Symbol vom Fenster, das Fenster schliessen. this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); this.setResizable(false); // Groese kann nicht von Benutzer geaendert werden :-D } public void initWindow(){ // Alle Dinge instanzieren txt = new JLabel("Hier wird spaeter die Texte stehen"); // Klasse erzeugen + Defaulttext festlegen text_0 = new JButton("Text 1"); // Button erzeugen + Text auf Button festlegen text_1 = new JButton("Text 2"); // Button erzeugen + Text auf Button festlegen beenden = new JButton("Beenden"); // Button erzeugen + Text auf Button festlegen kb = new KlausBackend(); kb.setNachricht(); // Felder + Buttons positionieren txt.setBounds(2, 2, 180, 100); // Immer: (X-Wert, Y-Wert, Breite, Hoehe) text_0.setBounds(0, 190, 100, 30); text_1.setBounds(100, 190, 100, 30); beenden.setBounds(200, 190, 100, 30); // Elemente anzeigen this.getContentPane().add(txt); this.getContentPane().add(text_0); this.getContentPane().add(text_1); this.getContentPane().add(beenden); // Was soll passieren, wenn man auf ein Button klickt? // Button: text_0 text_0.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ // Aktionen nach dem Drucken des Buttons: changeText(0); // Methode unten aufrufen } }); // Button: text_1 text_1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ // Aktionen nach dem Drucken des Buttons: changeText(1); // Methode unten aufrufen } }); // Button: beenden beenden.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ // Aktionen nach dem Drucken des Buttons: beenden(); // Methode unten aufrufen } }); // Und immer zum Schluss + ist seeehr wichtig: this.pack(); } // Wird einfach benoetigt, da es keine Abstrakte Klasse ist. public void actionPerformed(ActionEvent e) { //Do nothing } // Selbsterklaerend, oder? public void beenden(){ System.exit(0); } /** * Aender den Text (rufe dafuer Methode aus anderer Klasse auf * => txt.setText(); diese Methode setzt den Text * @author Lukas Schreiner * @param integer number Die Nummer des Arrayindexes */ public void changeText(int number){ txt.setText(kb.getNachricht(number)); } // Muss immer aufgerufen werden. public static void main(String args[]){ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new KlausFrontend().setVisible(true); // KlausFrontend immer mit dem Klassennamen aendern } }); } } |



