samedi 30 mai 2015

Input/Output Bekanntenkreis Gui - Speichern und Laden der Bekannten

Hallo :),
nach langer Überlegung, habe ich mich doch entschieden hier einen Eintrag zu verfassen, da ich an dieser Stelle einfach null weiter komme. Ich bin Java Anfänger und habe leider schon in vielen Foren mitbekommen, dass Anfänger runter gemacht wurden, wenn sie Fragen gestellt haben, weil ihr Code an anderen Stellen Fehlerhaft war. Ich bitte euch also etwas nachsichtig zu sein, ihr könnt mich gerne auf Fehler hinweisen aber ich Frage hier ja nicht umsonst. Ich bin weit von einem Profi entfernt und es kann durchaus sein, das mein folgender Code etwas chaotisch ist :).

So nun aber erst mal zu meiner Frage. Wir hatten in unserem Java Kurs die Aufgabe eine Art Adressbuch zu erstellen, Diese sollten wir dann in eine GUI um schreiben und nun geht es darum, diese Gui so zu erweitern, dass man die Bekannten Speichern und wieder Laden kann.

Hier erst mal der Komplette Code + mein Versuch des Speicherns /Ladens

Klasse Bekannter

Java Code:

  1. public class Bekannter { private String name;
  2. private String adresse;
  3. private String telefonnummer;
  4. private String handynummer;
  5. private String emailadresse;
  6. private String notizen;
  7. private String geburtstag;
  8. private String verwandtschaftsart;
  9. private String Art;
  10.  
  11.  
  12.  
  13.  
  14. private boolean isFreund;
  15.  
  16.  
  17. public String getGeburtstag() {
  18. return geburtstag;
  19. }
  20.  
  21.  
  22. public void setGeburtstag(String geburtstag) {
  23. this.geburtstag = geburtstag;
  24. }
  25.  
  26.  
  27. public boolean isFreund() {
  28. return isFreund;
  29. }
  30.  
  31.  
  32. public void setFreund(boolean isFreund) {
  33. this.isFreund = isFreund;
  34. }
  35.  
  36. private boolean isVerwandt;
  37.  
  38. public String getVerwandtschaftsart() {
  39. return verwandtschaftsart;
  40. }
  41.  
  42.  
  43. public void setVerwandtschaftsart(String verwandtschaftsart) {
  44. this.verwandtschaftsart = verwandtschaftsart;
  45. }
  46.  
  47. public boolean isVerwandt() {
  48. return isVerwandt;
  49. }
  50.  
  51. public void setVerwandt(boolean isVerwandt) {
  52. this.isVerwandt = isVerwandt;
  53. }
  54.  
  55.  
  56. public String getName() {
  57. return name;
  58. }
  59.  
  60.  
  61. public Bekannter(String name, String adresse, String telefonnummer,
  62. String handynummer, String emailadresse, String notizen,
  63. boolean isFreund, boolean isVerwandt) {
  64. super();
  65. this.name = name;
  66. this.adresse = adresse;
  67. this.telefonnummer = telefonnummer;
  68. this.handynummer = handynummer;
  69. this.emailadresse = emailadresse;
  70. this.notizen = notizen;
  71. this.isFreund = isFreund;
  72. this.isVerwandt = isVerwandt;
  73. }
  74.  
  75. public Bekannter() {
  76.  
  77. }
  78.  
  79.  
  80. public void setName(String name) {
  81. this.name = name;
  82. }
  83.  
  84.  
  85. public String getAdresse() {
  86. return adresse;
  87. }
  88.  
  89.  
  90. public void setAdresse(String adresse) {
  91. this.adresse = adresse;
  92. }
  93.  
  94.  
  95. public String getTelefonnummer() {
  96.  
  97.  
  98. return telefonnummer;
  99. }
  100.  
  101.  
  102. public void setTelefonnummer(String telefonnummer) {
  103. this.telefonnummer = telefonnummer;
  104. }
  105.  
  106.  
  107. public String getHandynummer() {
  108. return handynummer;
  109. }
  110.  
  111.  
  112. public void setHandynummer(String handynummer) {
  113. this.handynummer = handynummer;
  114. }
  115.  
  116.  
  117. public String getEmailadresse() {
  118. return emailadresse;
  119. }
  120.  
  121.  
  122. public void setEmailadresse(String emailadresse) {
  123. this.emailadresse = emailadresse;
  124. }
  125.  
  126.  
  127. public String getNotizen() {
  128. return notizen;
  129. }
  130.  
  131.  
  132. public void setNotizen(String notizen) {
  133. this.notizen = notizen;
  134. }
  135.  
  136.  
  137.  
  138. public String getArt() {
  139. return Art;
  140. }
  141.  
  142.  
  143. public void setArt(String art) {
  144. this.Art = art;
  145. }
  146.  
  147.  
  148. public String toString() {
  149. String typ;
  150. if (isFreund) {
  151. typ = "Freund";
  152. this.Art = "Freund";
  153. }else if (isVerwandt) {
  154. typ = "Verwandter";
  155. this.Art = "Verwandter";
  156. } else {
  157. typ = "Bekannter";
  158. this.Art = "Bekannter";
  159. }
  160. String ausgabe = "Typ:" + typ + "\n";
  161. ausgabe += "Name: " + name + "\n";
  162. ausgabe += "Adresse: " + adresse + "\n";
  163. ausgabe += "Telefonnummer: " + telefonnummer + "\n";
  164. ausgabe += "Handynummer: " + handynummer + "\n";
  165. ausgabe += "E-Mail: : " + emailadresse + "\n";
  166. ausgabe += "Notizen: " + notizen + "\n";
  167. if (isFreund) {
  168. ausgabe += "Geburtstag: " + geburtstag;
  169. }
  170. if (isVerwandt) {
  171. ausgabe += "Verwandtschaftsart: " + verwandtschaftsart;
  172. }
  173. return ausgabe;
  174. }
  175.  
  176.  
  177. }


Klasse Dialog

Java Code:

  1. import java.awt.Container;import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5.  
  6.  
  7. import javax.swing.JButton;
  8. import javax.swing.JComboBox;
  9. import javax.swing.JDialog;
  10. import javax.swing.JLabel;
  11. import javax.swing.JTextArea;
  12. import javax.swing.JTextField;
  13.  
  14.  
  15.  
  16.  
  17. class Dialog extends JDialog implements KeyListener{
  18. private JTextField txtName = new JTextField(10);
  19. private JTextField txtTelefonnummer = new JTextField(10);
  20. private JTextField txtHandynummer = new JTextField(10);
  21. private JTextField txtEmailadresse = new JTextField(10);
  22. private JTextField txtGeburtstag = new JTextField(10);
  23. private JTextField txtVerwandtschaftsart = new JTextField(10);
  24. private JTextArea txtAdresse = new JTextArea("", 5, 10);
  25. private JTextArea txtNotizen = new JTextArea("", 5, 10);
  26. private JButton ok = new JButton("Hinzufügen");
  27. StringManagerGui ref;
  28.  
  29.  
  30. Dialog(final StringManagerGui ref) {
  31. super(ref, "Neuen Bekannten", true); // Modal oder Nicht-Modal
  32. this.ref = ref;
  33. setLayout(null);
  34. Container cp = getContentPane();
  35. JLabel lblName = new JLabel("Name");
  36. JLabel lblAdresse = new JLabel("Adresse");
  37. JLabel lblTelefonnummer = new JLabel("Telefonnummer");
  38. JLabel lblHandynummer = new JLabel("Handynummer");
  39. JLabel lblEmailadresse = new JLabel("E-Mail");
  40. JLabel lblNotizen = new JLabel("Notizen");
  41. JLabel lblGeburtstag = new JLabel("Geburtstag");
  42. JLabel lblVerwandtschaftsart = new JLabel("Verwandtschaftsart");
  43. cp.add(lblName);
  44. lblName.setBounds(10, 10, 300, 30);
  45. cp.add(lblAdresse);
  46. lblAdresse.setBounds(10, 40, 300, 30);
  47. cp.add(lblTelefonnummer);
  48. lblTelefonnummer.setBounds(10, 110, 300, 30);
  49. cp.add(lblHandynummer);
  50. lblHandynummer.setBounds(10, 140, 300, 30);
  51. cp.add(lblEmailadresse);
  52. lblEmailadresse.setBounds(10, 170, 300, 30);
  53. cp.add(lblNotizen);
  54. lblNotizen.setBounds(10, 200, 300, 30);
  55. cp.add(lblGeburtstag);
  56. lblGeburtstag.setBounds(10, 270, 300, 30);
  57. cp.add(lblVerwandtschaftsart);
  58. lblVerwandtschaftsart.setBounds(10, 300, 300, 30);
  59. cp.add(txtName);
  60. txtName.setBounds(140, 10, 300, 30);
  61. txtName.addKeyListener(this);
  62. cp.add(txtAdresse);
  63. txtAdresse.setBounds(140, 40, 300, 70);
  64. cp.add(txtTelefonnummer);
  65. txtTelefonnummer.setBounds(140, 110, 300, 30);
  66. cp.add(txtHandynummer);
  67. txtHandynummer.setBounds(140, 140, 300, 30);
  68. cp.add(txtEmailadresse);
  69. txtEmailadresse.setBounds(140, 170, 300, 30);
  70. cp.add(txtNotizen);
  71. txtNotizen.setBounds(140, 200, 300, 70);
  72. cp.add(txtGeburtstag);
  73. txtGeburtstag.setBounds(140, 270, 300, 30);
  74. txtGeburtstag.setEnabled(false);
  75. cp.add(txtVerwandtschaftsart);
  76. txtVerwandtschaftsart.setBounds(140, 300, 300, 30);
  77. txtVerwandtschaftsart.setEnabled(false);
  78. String[] typen = { "Bekannter", "Freund", "Verwandter" };
  79. final JComboBox<String> cmbTyp = new JComboBox<String>(typen);
  80. cp.add(cmbTyp);
  81. cmbTyp.setBounds(140, 340, 130, 30);
  82. cmbTyp.addActionListener(new ActionListener() {
  83. public void actionPerformed(ActionEvent e) {
  84. if (cmbTyp.getSelectedItem().equals("Bekannter")) {
  85. txtGeburtstag.setEnabled(false);
  86. txtVerwandtschaftsart.setEnabled(false);
  87. } else if (cmbTyp.getSelectedItem().equals("Freund")){
  88. txtGeburtstag.setEnabled(true);
  89. }else{
  90. txtVerwandtschaftsart.setEnabled(true);
  91. txtGeburtstag.setEnabled(false);
  92. }
  93. }
  94. });
  95. ok.setBounds(280, 340, 130, 30);
  96. ok.addActionListener(new ActionListener() {
  97. public void actionPerformed(ActionEvent e) {
  98. boolean isFreund;
  99. if (cmbTyp.getSelectedItem().equals("Freund")) {
  100. isFreund = true;
  101. } else {
  102. isFreund = false;
  103. }
  104.  
  105. boolean isVerwandt;
  106. if (cmbTyp.getSelectedItem().equals("Verwandter")) {
  107. isVerwandt = true;
  108. } else {
  109. isVerwandt = false;
  110. }
  111. Bekannter b = new Bekannter(txtName.getText(), txtAdresse
  112. .getText(), txtTelefonnummer.getText(), txtHandynummer
  113. .getText(), txtEmailadresse.getText(), txtNotizen
  114. .getText(), isFreund, isVerwandt);
  115. if (isFreund) {
  116. b.setGeburtstag(txtGeburtstag.getText());
  117. } else if (isVerwandt) {
  118. b.setVerwandtschaftsart(txtVerwandtschaftsart.getText());
  119. }
  120.  
  121.  
  122. ref.newBekannten(b);
  123. setVisible(false);
  124. }
  125.  
  126. });
  127. ok.setEnabled(txtName.getText().length()>0);
  128. cp.add(ok);
  129. setSize(500, 450);
  130. setLocation(250, 320);
  131. }
  132.  
  133. public void keyPressed(KeyEvent e) {
  134. ok.setEnabled(txtName.getText().length()>0);
  135.  
  136. }
  137.  
  138.  
  139. public void keyReleased(KeyEvent e) {
  140. ok.setEnabled(txtName.getText().length()>0);
  141.  
  142. }
  143. public void keyTyped(KeyEvent e) {
  144.  
  145. }
  146.  
  147.  
  148.  
  149. }


Klasse StringManagerGui

Java Code:

  1. import java.awt.Container;import java.awt.FlowLayout;
  2.  
  3.  
  4. import javax.swing.JButton;
  5. import javax.swing.JFileChooser;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.JTextArea;
  9.  
  10.  
  11. public class StringManagerGui extends JFrame{
  12. private JTextArea stringMonitor;
  13. private JButton next;
  14. private JButton previous;
  15. private JButton save;
  16. private JButton load;
  17. private JButton new_String;
  18. private StringManagerGui stm;
  19. private Bekanntenlist sl;
  20. private JFrame frame;
  21.  
  22. public StringManagerGui() {
  23. sl = new Bekanntenlist();
  24. stm = this;
  25. Container contentPane = getContentPane();
  26. contentPane.setLayout(new FlowLayout());
  27. JPanel buttons = new JPanel(new FlowLayout());
  28. stringMonitor = new JTextArea("", 25, 40);
  29. stringMonitor.setEditable(false);
  30. contentPane.add(stringMonitor);
  31.  
  32. frame = new JFrame("Testname");
  33. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34. previous = new JButton("<<<");
  35. previous.addActionListener(new java.awt.event.ActionListener() {
  36. public void actionPerformed(java.awt.event.ActionEvent e) {
  37. stringMonitor.setText(sl.previousBekannter().toString());
  38. }
  39. });
  40. new_String = new JButton("Hinzufügen");
  41. new_String.addActionListener(new java.awt.event.ActionListener() {
  42. public void actionPerformed(java.awt.event.ActionEvent e) {
  43. Dialog d = new Dialog(stm);
  44. d.setVisible(true);
  45. }
  46. });
  47. next = new JButton(">>>");
  48. next.addActionListener(new java.awt.event.ActionListener() {
  49. public void actionPerformed(java.awt.event.ActionEvent e) {
  50. stringMonitor.setText(sl.nextBekannter().toString());
  51. }
  52. });
  53. save = new JButton("Speichern");
  54. save.addActionListener(new java.awt.event.ActionListener() {
  55. public void actionPerformed(java.awt.event.ActionEvent e) {
  56. JFileChooser dateiWahl = new JFileChooser();
  57. dateiWahl.showSaveDialog(frame);
  58. sl.dateiSpeichern(dateiWahl.getSelectedFile());
  59. }
  60. });
  61.  
  62. load = new JButton("Laden");
  63. load.addActionListener(new java.awt.event.ActionListener() {
  64. public void actionPerformed(java.awt.event.ActionEvent e) {
  65. JFileChooser dateiOeffnen = new JFileChooser();
  66. dateiOeffnen.showOpenDialog(frame);
  67. sl.dateiLaden(dateiOeffnen.getSelectedFile());
  68. }
  69. });
  70.  
  71. buttons.add(previous);
  72. buttons.add(new_String);
  73. buttons.add(next);
  74. buttons.add(save);
  75. buttons.add(load);
  76. contentPane.add(buttons);
  77. setSize(500, 500);
  78. setVisible(true);
  79. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  80. }
  81.  
  82.  
  83. public void newBekannten(Bekannter bekannter) {
  84. stringMonitor.setText(bekannter.toString());
  85. sl.addBekannten(bekannter);
  86. }
  87.  
  88.  
  89. public static void main(String[] args) {
  90. StringManagerGui smg = new StringManagerGui();
  91. }
  92.  
  93.  
  94.  
  95.  
  96. }


Klasse Bekanntenlist

In dieser Klasse befindet sich dann auch mein Versuch. Momentan wird jedoch nur der erste Bekannte den man gespeichert hat auch wieder aus der Textdatei ausgelesen. Es werden zwar alle in die Textdatei geschrieben, ich habe aber keine Ahnung, wie ich diese richtig auslese, damit man wieder im Adressbuch blättern kann und alle bekannten angezeigt bekommt. Hoffentlich kann mir jemand helfen :)
Java Code:

  1. import java.io.*;import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.ListIterator;
  4.  
  5.  
  6. public class Bekanntenlist implements Serializable {
  7. private List<Bekannter> list;
  8. private ListIterator<Bekannter> iterator;
  9.  
  10.  
  11. public Bekanntenlist() {
  12. list = new ArrayList<Bekannter>();
  13. iterator = list.listIterator();
  14. }
  15.  
  16.  
  17. public void addBekannten(Bekannter bekannter) {
  18. list.add(bekannter);
  19. iterator = list.listIterator();
  20. }
  21.  
  22.  
  23. // liefert das vorherige Element aus der Liste
  24.  
  25.  
  26. public Bekannter previousBekannter() {
  27. if (iterator.hasPrevious())
  28. return iterator.previous();
  29. return list.get(0);
  30. }
  31.  
  32.  
  33. // Liefert das nächste Element aus der Liste
  34.  
  35.  
  36. public Bekannter nextBekannter() {
  37. if (iterator.hasNext())
  38. return iterator.next();
  39. return list.get(0);
  40. }
  41.  
  42.  
  43. public boolean isEmpty() {
  44. if (list.isEmpty()) {
  45. return true;
  46. }
  47. return false;
  48. }
  49.  
  50.  
  51. // Datei Speichern
  52.  
  53.  
  54. public void dateiSpeichern(File datei) {
  55. try {
  56. BufferedWriter writer = new BufferedWriter(new FileWriter(datei));
  57. for (Bekannter bekannter : list) {
  58. writer.write(bekannter.getArt() + "/");
  59. writer.write(bekannter.getName() + "/");
  60. writer.write(bekannter.getAdresse() + "/");
  61. writer.write(bekannter.getEmailadresse() + "/");
  62. writer.write(bekannter.getGeburtstag() + "/");
  63. writer.write(bekannter.getHandynummer() + "/");
  64. writer.write(bekannter.getNotizen() + "/");
  65. writer.write(bekannter.getTelefonnummer() + "/");
  66. writer.write(bekannter.getVerwandtschaftsart() + "/");
  67. }
  68. writer.close();
  69. } catch (IOException ex) {
  70. System.out.println("konnte die Bekanntenliste nicht schreiben");
  71. ex.printStackTrace();
  72. }
  73. }
  74.  
  75.  
  76. // datei Laden
  77. public void dateiLaden(File datei) {
  78. try {
  79. BufferedReader reader = new BufferedReader(new FileReader(datei));
  80. String zeile = null;
  81. while ((zeile = reader.readLine()) != null) {
  82. test(zeile);
  83. System.out.println(zeile);
  84. }
  85. reader.close();
  86. } catch (IOException ex) {
  87. System.out.println("konnte die Bekanntenliste nicht lesen");
  88. ex.printStackTrace();
  89. }
  90. }
  91.  
  92.  
  93. // testfunktion, die aus den gelesenen zeilen einen Neuen Bekannten erstellt
  94. private void test(String zuParsendeZeile) {
  95. String[] zeile = zuParsendeZeile.split("/");
  96. Bekannter bekannter = new Bekannter();
  97. bekannter.setArt(zeile[0]);
  98. bekannter.setName(zeile[1]);
  99. bekannter.setAdresse(zeile[2]);
  100. bekannter.setEmailadresse(zeile[3]);
  101. bekannter.setGeburtstag(zeile[4]);
  102. bekannter.setHandynummer(zeile[5]);
  103. bekannter.setNotizen(zeile[6]);
  104. bekannter.setTelefonnummer(zeile[7]);
  105. bekannter.setVerwandtschaftsart(zeile[8]);
  106. list.add(bekannter);
  107. iterator = list.listIterator();
  108. }
  109. }


Input/Output Bekanntenkreis Gui - Speichern und Laden der Bekannten

0 commentaires:

Enregistrer un commentaire