import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; class Konto { public String inhaber; private double stand; public boolean gesperrt; Konto() { } Konto(String inhaber, double stand, boolean gesperrt) { this.inhaber = inhaber; this.stand = stand; this.gesperrt = gesperrt; } double abfragen() { return stand; }; void leeren() { stand = 0; }; void einzahlen(double betrag) { stand += betrag; }; double abheben(double betrag) { if (betrag<=stand) { stand -= betrag; return betrag; } else return -1; }; } class KontoAnzeige extends JFrame { Konto konto; JTextField feldInhaber, feldStand, feldGesperrt; KontoAnzeige(Konto konto) { this.konto = konto; setLayout(new GridLayout(0, 1)); JLabel lab = new JLabel("Inhaber:"); lab.setFont(new Font("Arial",Font.BOLD,24)); add(lab); feldInhaber = new JTextField(); feldInhaber.setFont(new Font("Arial",Font.BOLD,24)); add(feldInhaber); lab = new JLabel("Stand:"); lab.setFont(new Font("Arial",Font.BOLD,24)); add(lab); feldStand = new JTextField(); feldStand.setFont(new Font("Arial",Font.BOLD,24)); add(feldStand); lab = new JLabel("Gesperrt:"); lab.setFont(new Font("Arial",Font.BOLD,24)); add(lab); feldGesperrt = new JTextField(); feldGesperrt.setFont(new Font("Arial",Font.BOLD,24)); add(feldGesperrt); Listener lis = new Listener(); JButton but = new JButton("Anzeigen"); but.setFont(new Font("Arial",Font.BOLD,24)); but.addActionListener(lis); add(but); but = new JButton("Übernehmen"); but.setFont(new Font("Arial",Font.BOLD,24)); but.addActionListener(lis); add(but); but = new JButton("Laden"); but.setFont(new Font("Arial",Font.BOLD,24)); but.addActionListener(lis); add(but); but.setFont(new Font("Arial",Font.BOLD,24)); but = new JButton("Speichern"); but.setFont(new Font("Arial",Font.BOLD,24)); but.addActionListener(lis); add(but); but = new JButton("Quit"); but.setFont(new Font("Arial",Font.BOLD,24)); but.addActionListener(lis); add(but); setLocation(200,200); pack(); setVisible(true); } class Listener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Anzeigen")) { feldInhaber.setText(konto.inhaber); feldStand.setText((new Double(konto.abfragen())).toString()); feldGesperrt.setText((new Boolean(konto.gesperrt)).toString()); } if (e.getActionCommand().equals("Übernehmen")) { konto.inhaber = feldInhaber.getText(); konto.leeren(); konto.einzahlen(Double.parseDouble(feldStand.getText())); konto.gesperrt = Boolean.parseBoolean(feldGesperrt.getText()); } if (e.getActionCommand().equals("Laden")) { JFileChooser jfc = new JFileChooser(); int auswahl = jfc.showOpenDialog(null); if (auswahl==JFileChooser.APPROVE_OPTION) { liesKonto(jfc.getSelectedFile().getName()); feldInhaber.setText(konto.inhaber); feldStand.setText((new Double(konto.abfragen())).toString()); feldGesperrt.setText((new Boolean(konto.gesperrt)).toString()); } } if (e.getActionCommand().equals("Speichern")) { String dateiname = JOptionPane.showInputDialog("Dateiname:"); speichereKonto(dateiname); } if (e.getActionCommand().equals("Quit")) System.exit(0); } } void liesKonto(String dateiname) { try { FileReader frd = new FileReader(dateiname); BufferedReader brd = new BufferedReader(frd); konto.inhaber = brd.readLine(); konto.leeren(); konto.einzahlen(Double.parseDouble(brd.readLine())); konto.gesperrt = Boolean.parseBoolean(brd.readLine()); frd.close(); } catch (Exception exc) { JOptionPane.showMessageDialog(null,"Fehler beim Laden"); } } void speichereKonto(String dateiname) { try { FileWriter fwri = new FileWriter(dateiname); PrintWriter pwri = new PrintWriter(fwri); pwri.println(konto.inhaber); pwri.println(konto.abfragen()); pwri.println(konto.gesperrt); fwri.close(); } catch (Exception exc) { JOptionPane.showMessageDialog(null,"Fehler beim Speichern"); } } } public class KontoIOGrafisch { public static void main(String[] args) throws IOException, ClassNotFoundException { Konto meinKonto = new Konto("Donald Duck",200.0,false); new KontoAnzeige(meinKonto); } }