Hochschule Darmstadt Fachbereich Informatik
Entwicklung nutzerorientierter Anwendungen Prof. Dr. H.-P. Wiedling
04.07.2011 Lösungsvorschlag
1. Aufgabe (12 + 12 Punkte): Screendesign 1P: im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea
4P: Panel im East mit FlowLayout und Label, TextField, RadioButtonGroup und Button
4P: Panel im South mit BoxLayout und Label, TextField, Label, TextField, Glue, Button
…
jContentPane.setLayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setLayout( new BoxLayout(unten, BoxLayout.X_AXIS)); 1P
1P 1P
1P 1P
unten.add(new JLabel("Bieter")); bieter = new JTextField(" "); // bieter.setMaximumSize(new Dimension(50, 18)); // bieter.setPreferredSize(new Dimension(50, 18)); unten.add(bieter); unten.add(new JLabel("eigenes Gebot")); gebot = new JTextField(" "); //gebot.setMaximumSize(new Dimension(60, 18)); unten.add(gebot); unten.add(Box.createHorizontalGlue()); weiter = new JButton("weiter"); weiter.addActionListener(this); unten.add(weiter); // links JPanel links = new JPanel(); links.setLayout( new BoxLayout(links, BoxLayout.Y_AXIS)); JTextField vase = new JTextField(g.gegenstand); vase.setMaximumSize(new Dimension(180, 20));
Hochschule Darmstadt Fachbereich Informatik
1P
Entwicklung nutzerorientierter Anwendungen Prof. Dr. H.-P. Wiedling
1P
links.add(vase); JTextArea text = new JTextArea(7, 18); text.setText(g.beschreibung); JScrollPane p = new JScrollPane(text); p.setMaximumSize(new Dimension(180, 120)); links.add(p);
1P
// mitte JLabel icon = new JLabel(new ImageIcon(g.bild));
1P
// rechts JPanel rechts = new JPanel(); rechts.setLayout( new BoxLayout(rechts, BoxLayout.Y_AXIS)); rechts.add(new JLabel("Gebot"));
1P
top = new JTextField(String.valueOf(g.gebot)); top.setMaximumSize(new Dimension(180, 20)); rechts.add(top);
1P
1P
group = new ButtonGroup(); JRadioButton plus10 = new JRadioButton("+ 10"); JRadioButton plus50 = new JRadioButton("+ 50"); JRadioButton plus100 = new JRadioButton("+100"); group.add(plus10); group.add(plus50); group.add(plus100); rechts.add(plus10); rechts.add(plus50); rechts.add(plus100); plus10.setSelected(true); plus10.setActionCommand("10"); plus50.setActionCommand("50"); plus100.setActionCommand("100"); JButton inkrement = new JButton("Gebot erhöhen"); inkrement.addActionListener(this); rechts.add(inkrement); jContentPane.add(links, BorderLayout.WEST); jContentPane.add(icon, BorderLayout.CENTER); jContentPane.add(rechts, BorderLayout.EAST); jContentPane.add(unten, BorderLayout.SOUTH); this.pack();
Hochschule Darmstadt Fachbereich Informatik
Entwicklung nutzerorientierter Anwendungen Prof. Dr. H.-P. Wiedling
2. Aufgabe (6 Punkte): Interaktion
public class Versteigerung extends JFrame implements ActionListener {
1P
1P
1P
1P
1P
1P
weiter = new JButton ("weiter"); weiter.addActionListener(this); group = new ButtonGroup(); JRadioButton plus10 = new JRadioButton("+ 10"); JRadioButton plus50 = new JRadioButton("+ 50"); JRadioButton plus100 = new JRadioButton("+100"); group.add(plus10); group.add(plus50); group.add(plus100); rechts.add(plus10); rechts.add(plus50); rechts.add(plus100); plus10.setSelected(true); plus10.setActionCommand("10"); plus50.setActionCommand("50"); plus100.setActionCommand("100"); JButton inkrement = new JButton("Gebot erhöhen"); inkrement.addActionListener(this); rechts.add(inkrement);
public void actionPerformed(ActionEvent arg0) { if (arg0.equals(weiter)) { if (bieter.getText().isEmpty()) System.out.println("Bieter eintragen"); else { aktg.bieter = bieter.getText(); aktg.gebot = Double.parseDouble(top.getText()); } } else { String inkr = group.getSelection().getActionCommand(); double d = Double.parseDouble(top.getText()) + Double.parseDouble(inkr); top.setText(String.valueOf(d)); gebot.setText(top.getText()); } }
Hochschule Darmstadt Fachbereich Informatik
Entwicklung nutzerorientierter Anwendungen Prof. Dr. H.-P. Wiedling
3. Aufgabe (8 Punkte): Übersicht über Stand der Auktion
class Tabelle extends AbstractTableModel { ArrayList gegenstaende;
1P
1P
public Tabelle(ArrayList gegenstaende) { this.gegenstaende = gegenstaende; } public Class getColumnClass(int columnIndex) { try { if (columnIndex == 2) return Class.forName("java.lang.Double"); else return Class.forName("java.lang.String"); } catch (ClassNotFoundException ce) { System.out.println(ce.getMessage()); return null; } }
1P
public boolean isCellEditable(int rowIndex, int columnIndex) { return false; }
1P
public int getRowCount() { return gegenstaende.size();
1P
public int getColumnCount() { return 3; }
1P 1P
1P
}
public Object getValueAt(int row, int column) { Gegenstand g = gegenstaende.get(row); if (column == 2) return g.gebot; else if (column == 1) return g.bieter; else return g.gegenstand; } public void setValueAt(Object aValue, int rowIndex, int columnIndex) { return; }
public String getColumnName(int i) { if (i == 2) return "Gebot"; else if (i == 1) return "Bieter"; else return "Gegenstand"; } } // Uebersicht
Hochschule Darmstadt Fachbereich Informatik
Entwicklung nutzerorientierter Anwendungen Prof. Dr. H.-P. Wiedling
4. Aufgabe (12 Punkte): Navigationsübersicht über sämtliche Aktionen 1P Start + Anf/Ende 2 Benutzergruppen (Auktionator und Kunde/Bieter) Auktionator: o 4P Gegenstände erfassen (Startgebot, Gegenstand, Beschreibung, Abbildung) o 1P Auktion beenden (nicht Programm beenden)
Auktionator Kunde/Bieter
o 1P Übersicht Aufgabe 3 o Bieter: o 3P Gegenstände auswählen (Auswahl, bietenKnopf) o 1P Bieten