Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger

Ähnliche Präsentationen


Präsentation zum Thema: "Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger"—  Präsentation transkript:

1 Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger

2 Vorweg... ● Mehr Praktische Übung als Vorlesung... ● Prinzip des MVC anhand des Beispiel eines Taschenrechners. ● Ganz Wichtig : Fragen Fragen Fragen

3 Material ● WebSeite zur A&DII Vorlesung: ● Material zu den Swing-2 Folien : – Calculator.tar.gz herunterladen – auspacken : cd tar -xzf Calculator.tar.gz – Verzeichnis calculator enthält die Basisklassen zu den Folien – Klassen liegen im Package de.unibi.techfak.calculator

4 Model View Controller Model ViewController

5 Modell (1) Model ViewController ● Datenfelder ● Logik (Funktionen)

6 Modell (2) Operand1 Operand2 Operator Ergebnis berechne resetaddZiffer

7 Modell (3) public class CalculatorModel { public static final int PLUS = 0; public static final int MINUS = 1; public static final int MAL = 2; public static final int DURCH = 3; private Double operand1; private Double operand2; private Integer operator; public Double berechne(){... switch (operator) { case (CalculatorModel.PLUS): return (operand1 + operand2); break; }... }

8 Modell (4) public class CalculatorModel {... private StringBuffer currentBuffer = new StringBuffer();... public String addZiffer(char ziffer){ currentBuffer.append(ziffer); return currentBuffer.toString(); } public void setOperator(int operator) { if ((currentBuffer.length() > 0) && (this.operator == null)) { operand1 = Double.parseDouble(currentBuffer.toString()); currentBuffer.setLength(0); this.operator = operator; }... }

9 Aufgabe ● Implementiere die Klasse CalculatorModel – Double operand1; Double operand2; Integer operator; – public Double berechne(); public String addZiffer(double ziffer); public void addOperator(int operator); public void reset(); ● Tips: – Die Fkt. berechne() muss den Operand2 setzen, bevor gerechnet werden kann, d.h. der Prototyp muss entsprechend erweitert werden. – Die main(String [] args) Methode der Klasse enthält Tests, die das Modell erfüllen muss!

10 Präsentation (1) ● Darstellung des Modells ● Benutzerinteraktion Model View Controller

11 Präsentation(2) JButton JLabel * + C / - = South Center JPanel JTextField

12 Präsentation(3) public class CalculatorView implements JPanel{ private JTextField anzeige; public void CalculatorView() { // CalculatorModel cm = new CalculatorModel(); // CalculatorController cc = new CalculatorController(this,cm); setLayout(new BorderLayout()); anzeige = new JTextField(); add(anzeige, BorderLayout.Center);... JButton t1 = new JButton(“1”); // t1.addActionListener(cc);... } public void setAnzeige(String text){ anzeige.setText(text); }

13 Aufgabe Erweitere die Klasse CalculatorView um das Tastenfeld des Taschenrechners! ● (temporäres) JPanel mit GridLayout(4,5) ● JButton für '0'...'9' und '.' ● JButton für '+','-','*','/','=','C' ● Testen : import javax.JFrame; public class Calculator { public static void main (String [] args) { JFrame f = new JFrame(“Taschenrechner”); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new CalculatorView()); f.pack(); f.setVisible(true); }

14 Steuerung (1) ● Benutzeraktion auswerten ● Aktion ausführen ● Präsentation ändern Model View Controlle r

15 Steuerung (2) public class CalculatorController implements ActionListener{ private CalculatorView cv; private CalculatorModel cm; public CalculatorController(CalculatorView cv, CalculatorModel cm) { this.cv = cv; this.cm = cm; } public void actionPerformed(ActionEvent e) { String actioncommand = e.getActionCommand(); if (actioncommand.equals(“1”) { char ziffer = actioncommand.charAt(0); String value = cm.addZiffer(ziffer); cv.setAnzeige(value); } else if (..... ) {... }

16 Steuerung (3) public class CalculatorController implements ActionListener{ private CalculatorView cv; private CalculatorModel cm;... public void actionPerformed(ActionEvent e) {... } else if (actioncommand.equals(“+”)) { cm.setOperator(CalculatorModel.PLUS); cv.setAnzeige(“+”); } else if ( } else if (actioncommand.equals(“C”)) { cm.reset(); cv.setAnzeige(“”); }

17 Aufgabe ● Vervollständige die Klasse CalculatorController ● Füge Modell, Repräsentation und Controller zusammen funktioniert der Rechner ? ● Was fehlt / könnte verbessert werden ?

18 Ende


Herunterladen ppt "Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger"

Ähnliche Präsentationen


Google-Anzeigen