Übungsblatt 09 - Lösungsvorschlag - Informatik

Werbung
Universität Augsburg, Institut für Informatik
Prof. Dr. Werner Kießling
M. Endres, A. Huhn, T. Preisinger
Sommersemester 2006
05. Juli. 2006
Lösungsblatt 9
Informatik II
Aufgabe 1: Frontend für Delete
DeleteGUI.java
import java.io.File;
import javax.swing.*;
public class DeleteGUI {
public static void main(String[] args) {
File file;
if (args.length == 0) {
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES\_AND\_DIRECTORIES);
jfc.showOpenDialog(null);
file = jfc.getSelectedFile();
if (file == null) {
JOptionPane.showMessageDialog(null, "Keine Datei ausgewählt.",
"DeleteGUI", JOptionPane.ERROR\_MESSAGE);
} else {
String type = file.isDirectory() ? "Verzeichnis" : "Datei";
int confirm = JOptionPane.showConfirmDialog(null, type +
" wirklich löschen?", "DeleteGUI", JOptionPane.YES\_NO\_OPTION);
if (confirm == JOptionPane.YES\_OPTION) {
JOptionPane.showMessageDialog(null, "Lösche ’" + file + "’.",
"DeleteGUI", JOptionPane.INFORMATION_MESSAGE);
Delete.delete(file);
}
}
}
}
Aufgabe 2: Stein, Schere, Papier
SteinScherePapier.java
import java.util.Random;
import javax.swing.JOptionPane;
public class SteinScherePapier {
public static void main(String[] args) {
String[] values = { "Stein", "Schere", "Papier" };
Object selectedValue = values[0];
String message = new String();
int machineSelection, userWins = 0, computerWins = 0, equal = 0;
Random rnd = new Random(); // Zufallsgenerator initialisieren
boolean userWasWinner = false;
while (selectedValue != null) {
machineSelection = rnd.nextInt(3); // Computer-Auswahl
message += "Bitte neue Auswahl treffen!";
selectedValue = JOptionPane.showInputDialog(null, message,
"Stein, Schere, Papier", JOptionPane.INFORMATION_MESSAGE, null,
values, values[0]);
1
if (selectedValue != null) {
// Gleiche Auswahl behandeln
if (selectedValue.equals(values[machineSelection])) {
equal++;
message = "Gleiche Auswahl (" + selectedValue + "). ";
continue;
}
switch (machineSelection) {
case 0: // Computer wählt "Stein"
if (selectedValue.equals("Schere")) userWasWinner = false;
else userWasWinner = true; // Benutzer wählt Papier
break;
case 1: // Computer wählt "Schere"
if (selectedValue.equals("Papier")) userWasWinner = false;
else userWasWinner = true; // Benutzer wählt Stein
break;
case 2: // Computer wählt "Papier"
if (selectedValue.equals("Stein")) userWasWinner = false;
else userWasWinner = true; // Benutzer wählt Schere
break;
}
if (userWasWinner) {
userWins++;
message = "Benutzer gewinnt:\n" + selectedValue + " gewinnt gegen "
+ values[machineSelection] + "! ";
} else {
computerWins++;
message = "Computer gewinnt:\n" + values[machineSelection]
+ " gewinnt gegen " + selectedValue + "! ";
}
}
}
// Endergebnis anzeigen
String cWins = computerWins == 1 ? " Sieg " : " Siege ";
String uWins = userWins == 1 ? " Sieg " : " Siege ";
JOptionPane.showMessageDialog(null, equal + " Unentschieden\n"
+ computerWins + cWins + "des Computers\n" + userWins + uWins
+ "des Benutzers", "Ergebnis", JOptionPane.INFORMATION_MESSAGE);
}
}
Aufgabe 3: Events
EventFrame.java
import java.awt.Color;
import java.awt.event.*;
import javax.swing.JFrame;
public class EventFrame extends JFrame {
public static void main(String[] args) {
EventFrame ef = new EventFrame();
// Erst Frame-Einstellungen setzen, dann Listener hinzufügen
ef.getContentPane().setBackground(Color.RED);
ef.setSize(550, 300);
ef.setLocationRelativeTo(null);
ef.setVisible(true);
2
MyMouseListener mml = new MyMouseListener(ef);
ef.addMouseListener(mml);
ef.addMouseMotionListener(mml);
ef.addComponentListener(new MyComponentListener(ef));
ef.addKeyListener(new MyKeyListener(ef));
ef.requestFocus();
ef.addWindowListener(new MyWindowListener(ef));
}
}
class MyWindowListener extends WindowAdapter {
private JFrame frame;
public MyWindowListener(JFrame f) { frame = f; }
public void windowClosing(WindowEvent e) { frame.dispose(); }
}
class MyMouseListener extends MouseAdapter implements MouseMotionListener {
private JFrame frame;
// Startpunkt beim Ziehen mit gedrückter Maustaste (Dragging).
private int dragStartX, dragStartY;
public MyMouseListener(JFrame f) { frame = f; }
public void mouseClicked(MouseEvent e) {
int clickCount = e.getClickCount();
String msg;
if (clickCount == 1) {
msg = "Klick";
} else if (clickCount == 2) {
msg = "Doppelklick";
} else {
msg = clickCount + "-fach-Klick";
}
frame.setTitle(msg + " an Position " + e.getX() + "/" + e.getY());
}
public void mouseEntered(MouseEvent e) {
frame.setTitle("Maus im Fenster");
}
public void mouseExited(MouseEvent e) {
frame.setTitle("Maus nicht im Fenster");
}
public void mousePressed(MouseEvent e) {
// Position merken, falls Dragging beginnt.
dragStartX = e.getX();
dragStartY = e.getY();
}
// Methoden aus MouseMotionListener
public void mouseDragged(MouseEvent e) {
frame.setTitle("Ziehe Maus von Position " + dragStartX + "/" + dragStartY
+ " zu " + e.getX() + "/" + e.getY());
}
public void mouseMoved(MouseEvent e) {;}
}
3
class MyComponentListener extends ComponentAdapter {
private JFrame frame;
public MyComponentListener(JFrame f) { frame = f; }
public void componentMoved(ComponentEvent e) {
frame.setTitle("Komponente wurde bewegt an Position " + frame.getX() + "/"
+ frame.getY() + ".");
}
public void componentResized(ComponentEvent e) {
frame.setTitle("Komponentengröße wurde verändert. Neue Größe: "
+ frame.getX() + "/" + frame.getY() + ".");
}
}
class MyKeyListener extends KeyAdapter {
private JFrame frame;
public MyKeyListener(JFrame f) { frame = f; }
public void keyReleased(KeyEvent e) {
frame.setTitle("Taste ’" + KeyEvent.getKeyText(e.getKeyCode())
+ "’ gedrückt.");
}
}
4
Herunterladen