Hallo Java-Knopf

Werbung
Informatik-AG—1. Woche: Hallo Java-Knopf
Bernhard Haubold
31. August 2015
1 Einleitung
Wir fangen mit Java an. Heute wollen wir lernen, wir “graphische Elemente” funktionieren.
JFrame
MeinRahmen
main(a:String[]):void
Abbildung 1: Die Klasse MeinRahmen erbt von der Klasse JFrame, die Teil der Java-Bibliothek ist.
2 Vorbemerkungen
Alle graphischen Elemente in Java müssen in einem Rahmen sichtbar gemacht werden. Besonders gut dafür geeignet ist der Rahmen, der JFrame heißt. Du kannst ihn erzeugen, indem Du die Datei MeinRahmen.java
erzeugst, und dann hineinschreibst:
1
import javax.swing.*;
public class MeinRahmen extends JFrame{
public static void main(String args[]){
MeinRahmen mr;
6
mr = new MeinRahmen();
mr.setSize(300, 400);
mr.setTitle("Hallo Rahmen");
mr.setVisible(true);
11
}
}
An diesem Programm kann man schon eine Menge Java lernen:
• Der Befehl
import javax.swing.*;
stellt die Graphikbibliothek von Java zur Verfügung, die swing heißt.
1
• Die Zeile
public class MeinRahmen extends JFrame
deklariert die Klasse, deren Name mit dem Namen der Datei übereinstimmen muss. In unserem Fall ist
die Klasse abgeleitet von einer anderen Klasse, nämlich dem JFrame. Damit ist MeinRahmen eine Art
JFrame und “erbt” von diesem eine Reihe von Codierungsmöglichkeiten. Abbildung 1 zeigt das Verhltnis
von JFrame und MeinRahmen; ein solches Diagramm nennt man ein UML-Diagramm, fr United Modeling Language.
• Eine Klasse kann Funktionen enthalten, die in Java Methoden heißen. Die Klasse MeinRahmen hat eine
einzige Methode, nämlich main, deklariert durch
public static void main(String args[])
Solch eine main Methode liefert stets den Startpunkt für ein Java-Programm.
• Die Zeile
MeinRahmen mr;
deklariert die Variable mr vom Typ MeinRahmen. Bemerke zwei Dinge hier: Variablen Namen werden
normalerweise klein geschrieben, Klassennamen groß. Außerdem ist eine Klassendeklaration gleichzeitig
die Deklaration eines Datentyps. Aber was ist ein Datentyp? Ein Datentyp erklärt, welche Art von Daten
einer bestimmten Variablen zugewiesen werden kann. Das könnten ganze Zahlen sein, oder Zeichenketten,
oder eben auch Objekte vom Typ MeinRahmen.
• In der Zeile
mr = new MeinRahmen();
wird ein Objekt vom Typ MeinRahmen neu erzeugt und der Variablen mr zugewiesen. Das Erzeugen eines
Objekts bezeichnen Programmierer als “Instanziierung”.
• Jetzt können wir die in MeinRahmen deklarierten Methoden ansprechen, indem wir zum Beispiel in der
nächsten Zeile schreiben
mr.setSize(300, 400);
setSize ist eine Methode, die MeinRahmen von JFrame geerbt hat. Aber woher weiß man, welche
Methoden eine Klasse bereitstellt? Das ist beschrieben in der sogenannten “Application Programming Interface”, unter Programmierern kurz “API” genannt. Du findest einen Link zur Java-API auf der Netz-Seite
unserer AG:
http://docs.oracle.com/javase/7/docs/api/
In der Zeile
mr.setTitle("Hallo Rahmen");
wird eine weitere Methode von MeinRahmen aufgerufen, diesmal geben wir dem Rahmen einen Namen.
Und schließlich müssen wir den Rahmen noch mit der Zeile
mr.setVisible(true);
sichtbar machen.
• Jetzt wollen wir aber endlich loslegen! Compiliere das Programm mit dem Befehl
javac MeinRahmen.java
und lasse es laufen mit
java MeinRahmen &
2
3 Aufgaben
Aufgabe 3.1 Ersetze den Title von MeinRahmen durch “Hello JFrame”.
Aufgabe 3.2 Erzeuge zwei Rahmen, mr1 und mr2. mr1 heißt “Hallo Rahmen” und mr2 “Hello JFrame”.
Aufgabe 3.3 In der letzten Aufgabe lagen die beiden Fensterrahmen übereinander. Das können wir ändern, indem
wir zum Beispiel schreiben:
mr2.setLocation(100,100);
Schreibe Dein Programm so um, dass der zweite Fensterrahmen den ersten nicht vollständig verdeckt.
Aufgabe 3.4 Als nächstes wollen wir dem ersten Rahmen einen Knopf hinzufügen. Dazu benötigen wir direkt
hinter der Deklaration von mr1 und mr2 die Deklaration eines Knopfes:
JButton jb;
Weiter unten müssen wir den Knopf dann erzeugen
jb = new JButton("Button");
und ihn dem Rahmen hinzufügen:
mr1.add(jb);
Ändere die Beschriftung des Knopfes von “Button” zu Knopf.
3
Lösungen
Lösung zu Aufgabe 3.1:
mr.setTitle("Hello JFrame");
Lösung zu Aufgabe 3.2:
4
9
public static void main(String args[]){
MeinRahmen mr1, mr2;
mr1 = new MeinRahmen();
mr2 = new MeinRahmen();
mr1.setSize(300, 400);
mr2.setSize(300, 400);
mr1.setTitle("Hallo Rahmen");
mr2.setTitle("Hello JFrame");
mr1.setVisible(true);
mr2.setVisible(true);
}
Lösung zu Aufgabe 3.3:
mr1.setLocation(0, 0);
mr2.setLocation(100,100);
Lösung zu Aufgabe 3.4: Du kannst entweder schreiben
jb.setTitle("Knopf");
oder gleich bei der Instanziierung
jb = new JButton("Knopf");
4
Herunterladen