• Keine Ergebnisse gefunden

Folien Feld, Jlist

N/A
N/A
Protected

Academic year: 2022

Aktie "Folien Feld, Jlist"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Modul 404

Kompetenz: Vorgabe interpretieren, objektbasiert mit einer Programmiersprache implementieren, dokumentieren und testen.

Objektbasiert programmieren nach Vorgabe

Ueli Hagger

(2)

Modul 404

Kompetenz: Vorgabe interpretieren, objektbasiert mit einer Programmiersprache implementieren, dokumentieren und testen.

Array, Jlist, DefaultModelList

Ueli Hagger

(3)

gemachte Übungen

(4)

Aufgabe Taschenrechner

1. Erzeugen sie ein lauffähiges Java Programm 2. Geben sie dieses Programm und das leere

Testformular einem Mitstudierenden.

3. Dieser soll ihr Programm nun testen und zum Abschluss ein Testprotokoll erstellen

4. Besprechen sie das Ergebnis

(5)

Feld / Array (Kapitel 10)

z.B. int[] feld = new int[5];

feld[3] = 12;

feld[0] = 47;

Index [0] [1] [2] [3] [4]

Inhalt

Index [0] [1] [2] [3] [4]

Inhalt 12

Index [0] [1] [2] [3] [4]

Inhalt 47 12

(6)

Feld / Array

Ein Array ist homogen, d.h. es kann nur Elemente mit gleichem Datentyp speichern.

Die Indexierung beginnt immer mit null [0]

Die Anzahl Elemente eins Arrays, d.h. sie kann zur Laufzeit nicht mehr verändert werden,

z.B. int[] feld = new int[5]; // 5 Elemente

Es können auch mehrdimensionale Felder verwendet werden,

z.B. int [] [] matrix = new int [3] [2]; //3 Zeilen und 2 Spalten

Wenn zur Laufzeit ein Felder angelegt werden muss, so kann die Grösse als int- Variable definiert und zur Laufzeit initialisiert werden. Sie kann jedoch nicht mehr verändert werden, z.B.

int groesse = 8;

int[] feld = new int[groesse]; // 8 Elemente

Für die Bearbeitung von Feldern wird meistens eine for-Schleife verwendet.

(7)

String

Ein String ist ein dynamisches Array

Die Elemente sind von Datentyp char (homogen)

Die Indexierung beginnt immer mit null [0]

Ein String kann nur über Methoden bearbeitet werden, d.h. ein direkter Zugriff über den Index, z.B. [0] kann nicht erfolgen, z.B. xy.charAt(0)

Die Länge des obigen Strings ist 10

Index 0 1 2 3 4 5 6 7 8 9

Inhalt

'H' 'a' 'l' 'l' 'o ' ' ' 'V' 'e' 'l' 'o'

(8)

Aufgaben

- Stoff, bzw. Übungen repetieren

- Aufgabe Felder fertigstellen, bzw. nochmals machen - Übung JList

(9)

Aufgabe: Felder (Teilaufgabe 1)

Erstellen Sie ein Javaprojekt, dabei sind folgende Namenskonventionen zu verwenden

Projektname: feld_ihrname

Klassenname: Feld_ihrname

Erstellen sie folgendes Userinterface mit

2 Textfeldern

2 Labels

5 Buttons mit zugehörigen Eventhandler

Verwenden sie sinnvolle Variablennamen

Testen sie das Programm

(10)

Aufgabe: Felder (Teilaufgabe 2)

Definieren sie nun ein globales Integerfeld private int [] feld;

bei den Attributen.

Im Eventhandler des Buttons "Feld mit Zufallszahlen füllen"

wird nun als das Feld erzeugt, wobei die Grösse aus den Textfeld

"Feldgrösse" verwendet wird. Standardmässig wird 5 genommen werden, bzw. der Wert, welcher darin steht.

möglicher Code

int feldgroesse = Integer.parseInt(tF_groesse.getText());

feld = new int [feldgroesse];

Füllen sie das Feld mit den Zahlen 1,2,3,4,5 (feldgrösse). Es muss eine Schleife verwendet werden.

Geben Sie die letzte Zahl, welche sich im Feld befindet im Textfeld "Ergebnis" aus.

Testen sie das Programm

(11)

Aufgabe: Felder (Teilaufgabe 3)

Füllen sie nun das Feld mit den Zufallszahlen.

// Zufallszahlen im Bereich 1 bis 100

int zzahl = 1 +(int)(Math.random()*((100 - 1)+1));

• Es muss eine Schleife verwendet werden.

Zur Kontrolle können Sie die Zahlen auf die Konsole ausgeben.

• Geben Sie die letzte Zahl, welche sich im Feld befindet im Textfeld "Ergebnis" aus.

• Testen sie das Programm

(12)

Aufgabe: Felder (Teilaufgabe 4)

• Programmieren sie nun schrittweise die anderen vier Methoden.

• Testen sie das Programm

(13)

Aufgabe: Felder (Teilaufgabe 5)

Nachdem die Teilaufgaben 1 bis 4 laufen soll das Programm noch verbessert werden.

a) Beim Start des Programmes sollen die Tasten Mittelwert, Summe, kleinste Zahl und grösste Zahl inaktiv sein. Sobald das Feld mit Zufallszahlen gefüllt ist, sollen sie aktive

werden.

b) Es soll eine Fehlermeldung erscheinen, wenn bei der Feldgrösse keine Zahl

eingegeben wird.

c) Das Ergebnisfeld soll nicht mehr editierbar sein.

Testen sie das Programm laufend

(14)

Aufgabe: Felder (Teilaufgabe 6)

• Testen, siehe Folien testen

• Erstellen sie das Testformular mit Testfällen

• Testen sie die Funktionalität und füllen sie das Testformular aus.

• Erstellen sie einen Testbericht.

(15)

Testformular (Tabelle), siehe Folien testen

Testnummer: _____________________________

Testdatum: _____________________________

Programmname: _____________________________

Projektname: _____________________________

Version: _____________________________

Testperson: _________________________________

Testsystem (Betriebssystem): ___________________

IDE/Version: _______________________________

Java Version: _______________________________

Nr. Testsituation Aktion/Eingabe Erwartung/Ausgabe Effektives Resultat Erfüllt

J/N

15

(16)

DefaultListModel

DefaultListModel listenEintragungen = new DefaultListModel();

• Ein Objekt der Klasse DefaultListModel ist ein dynamisches Array.

• Die einzelnen Elemente sind mit Typ String

• Es kann nur über Methoden bearbeitet werden, d.h. ein direkter Zugriff über den Index, z.B. [0] kann nicht erfolgen.

• Nachfolgend ein Beispiel wo schon 5 Elemente hinzugefügt wurden.

Index 0 1 2 3 4

Inhalt

"Hallo" "12" "Das ist ein Satz" "12.5" "1. Zahl"

(17)

JList

• Die Einträge einer JList werden von einem Listenmodell verwaltet. Aus den Daten, die der JList im Konstruktor übergeben werden, wird ein unveränderliches Datenmodell

erstellt.

• Für einfachere dynamische Listen bietet sich die Klasse DefaultListModel an.

• Wenn man mit Vektoren (Array) vertraut ist, sollte es also auch leicht fallen, mit einem Listenmodell umzugehen.

17

(18)

JList/DefaultListModel

// Liste (Array)

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

list.setBounds(59, 53, 295, 152);

contentPane.add(list);

18

(19)

Übung

Verwenden sie folgende Namen:

JavaProjekt: demo_Jlist_IhrName

Klassenname: Demo_Jlist_IhrName

Erstellen sie folgendes Frame mit - Vier JLabel

- Drei JTextfield - Einem JButton - Einer JList

Denken sie daran die Variablennamen anzupassen

(20)

Übung

Nachdem Sie das Frame erstellt und getestet haben erstellen sie

- den EventHandler für den Button - den EventHandler für die JList

- Verschieben Sie den Code der beiden EventHander wie immer an den

Schluss.

- Testen sie, ob das Programm immer noch läuft.

(21)

Übung

• Nun soll das Feld (Array) -> DefaultListModel mit der JList verküpft werden.

• Die Zeile mit DefaultListModel müssen sie manuell ergänzen.

• Die farbigen Objektnamen sind freiwählbar.

Testen sie nun das Programm.

// Liste (Array)

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

list.setBounds(249, 54, 212, 140);

contentPane.add(list);

(22)

Übung

• Nun muss das Eingabe noch in das Feld DefaultListModel geschrieben werden.

• Dafür programmieren sie in EventHandler des Buttons folgendes

Testen sie danach das Programm.

btnUebernahme.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) {

String eingabe = TxF_Eingabe.getText();

listenEintagungen.addElement(eingabe);

} // actionPerformed }); // addActionListener

(23)

Übung

• Wenn sie nun ein Element auswählen soll der gewählte Index bzw. der Feldinhalt ausgeben werden.

• Dafür haben wir den EventHandler bei der Jlist gemacht. Dieser wird immer abgearbeitet, wenn ein Element ausgewählt wird.

list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent arg0)

{

int index = list.getSelectedIndex(); // gewählter Index

String s_index = String.valueOf(index); // wandeln für Ausgabe tF_Index.setText(s_index); // ausgeben

tF_Auswahl.setText((String)listenEintagungen.elementAt(index));

} // valueChanged

}); // addListSelectionListener

(24)

Übung

• Damit auch noch eine Bildlaufleiste erscheint muss wieder eine ScrollPane hinzugefügt werden.

• Dafür können wir einen neuen Container erstellen und diesen in der JList positionieren. Dabei ist die Position und die Grösse noch nicht relevant.

• Passen sie nun den Code an. Dafür können sie den erzeugten Code der JScrollPane verschieben und folgendermassen anpassen.

(25)

Übung

• Passen sie nun den Code an. Dafür können sie den erzeugten Code der JScrollPane verschieben und folgendermassen anpassen.

Testen sie nun das Programm.

// Liste (Array)

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

JScrollPane scrollPane = new JScrollPane();

scrollPane.setBounds(249, 54, 212, 140);

contentPane.add(scrollPane);

scrollPane.setViewportView(list);

(26)

Behandelte Elemente

JFrame

• Event handler

• ContentPane

(27)

Methoden DefaultListModel (JList)

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

// Anzahl Eintragungen in Liste

int anzahl = listenEintagungen.getSize();

// Element zu Liste hinzufügen

listenEintagungen.addElement("Hallo");

// Element an Position (hier 0) aus Liste lesen und // in einen String wandeln

String inhalt = listenEintagungen.getElementAt(0).toString();

27

Feld, Array

Objektname

(28)

Methoden DefaultListModel (JList)

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

// Anzahl Eintragungen in Liste

int anzahl = listenEintagungen.getSize();

// Element zu Liste hinzufügen

listenEintagungen.addElement("Hallo");

// Element an Position (hier 0) aus Liste lesen und // in einen String wandeln

String inhalt = listenEintagungen.getElementAt(0).toString();

(29)

Aufgabe

Entwickeln sie ein Java-Programm, welches in ein Textfeld eingegeben Zahlen untereinander in eine JList ausgibt.

Zusätzlich soll laufend der berechnete Mittelwert ausgegeben werden.

Nebenstehend finden sie ein GUI, welches sicher nicht schön dargestellt ist.

1. Entwerfen sie ein GUI

2. Implementieren sie ein Eventhandler (actionPerformed) bezogen auf die Eingabe (Textfeld links)

Dabei soll die Eingabe gespeichert und ausgegeben werden und erst danach der Inhalt des Feldes für die Berechnung verwendet werden.

3. Testen sie ihr Programm aus

DefaultListModel listenEintagungen = new DefaultListModel();

JList list = new JList(listenEintagungen);

(30)

JList/DefaultListModel

eingabe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) {

double summe = 0;

String wert = eingabe.getText();

listenEintagungen.addElement(wert);

int anzahl = listenEintagungen.getSize();

int i;

for (i= 0; i<anzahl;i++) {

summe += Double.parseDouble(listenEintagungen.getElementAt(i).toString());

}

auswahl.setText(String.valueOf(summe/anzahl));

eingabe.setText("");

} });

30

Referenzen

ÄHNLICHE DOKUMENTE

www.ibn.ch Ausgabe 18.. 6 Wie gross ist die Ladung eines Kondensators mit der Kapazität 70F, wenn er an eine Spannung von 380V gelegt wird?.. www.ibn.ch Ausgabe 18.. 7 Ein Photo

Schreibe in ein beliebiges Feld die Ziffer 1 und hüpfe im Rössel- sprung (2 gerade, 1 seitwärts) weiter.. Nummeriere fortlaufend die

Diese Relation ist für die weitere Argumentation deshalb so wichtig, weil Bour¬ dieu davon ausgeht, dass ein wesentlicher Teil des individuellen Handelns nicht bewusst-intentional

Solange die Probeladung im homogenen Feld bleibt, ändert sich die Auslenkung nicht, auch wenn man nun den Kondensator quer und parallel zur Richtung seiner Feldlinien

Verhältnis der Ausgabeleistung in eine betrachtete Richtung im Vergleich zur Leistung einer isotropischen Antenne in diese (und alle anderen) Richtungen, die mit derselben p ( ) g

.2&#34; als eine zwar nicht wörtliche, aber ziemlich sinngetreue Ueber¬. setzung des Syrers. Wir müssen daher annehmen, dass

Schon heute zeichnet sich nach einer Studie des Bundesamtes für Natur- schutz ab, dass drei der vier Wildselleriearten zu den Verlierern der Klimawandels gehören werden.. Für

Bei einer Temperatur von 0°C wäre es dann soweit, das Wasser würde gefrieren, wenn nicht ein elektrisches Feld das soweit behindern würde, das noch mehr Energie entzogen werden