JPanel problem

yax

Bekanntes Mitglied
Hallöchen,
Also ich bräuchte mal wieder eure hilfe, ich habe ein JFrame mit einen Button. Wenn ich auf den Button Drücke, entsteht im selben Fenster ein neues Panel mit einen Label. Aber wenn ich dass Programm schließe, öffnet sich ein Dialog, indem man einen Namen für eine Datei angeben kann, in der die Daten gespeichert werden. Doch wenn ich das Programm öffne, und die Datei öffne, wird mir alles dreifach angezeigt. Hat vielleicht jemand eine Idee??

Hier mein Code:

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Passwortmanager extends JFrame implements ActionListener, WindowListener {

  private final List<String> values = new ArrayList<String>();

  private JPanel listPanel;

  private JButton addButton;

  private JButton closeButton;

  public Passwortmanager() {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.addWindowListener(this);
    this.setTitle("Passwortmanager(Test)");
    this.setContentPane(createMainPanel());
    this.pack();

    queryFile();

  }

  private JPanel createMainPanel() {

    listPanel = new JPanel();
    listPanel.setPreferredSize(new Dimension(400, 200));
    listPanel.setBorder(BorderFactory.createEtchedBorder());
    JScrollPane pane = new JScrollPane(listPanel);

    addButton = new JButton("Hinzufügen");
    addButton.addActionListener(this);
    closeButton = new JButton("Schließen");
    closeButton.addActionListener(this);

    JPanel buttonPanel = new JPanel();
    buttonPanel.setBorder(BorderFactory.createEtchedBorder());
    buttonPanel.add(addButton);
    buttonPanel.add(closeButton);

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.add(pane, BorderLayout.CENTER);
    panel.add(buttonPanel, BorderLayout.SOUTH);
    return panel;

  }

  private void queryFile() {
    JFileChooser chooser = new JFileChooser();
    int retVal = chooser.showOpenDialog(this);
    if (retVal == JFileChooser.APPROVE_OPTION) {
      File file = chooser.getSelectedFile();
      loadFromFile(file);
    }
  }

  private void loadFromFile(File file) {
    try {
      BufferedReader reader = new BufferedReader(new FileReader(file));
      String line = "";
      while ((line = reader.readLine()) != null) {
        values.add(line);
        addInformation(line);
      }
      reader.close();
    } catch (FileNotFoundException e) {
      System.out.println("konnte die Datei nicht finden.");
    } catch (IOException e) {
      System.out.println("Beim laden der Datei ist ein Fehler aufgetreten");
    }
  }

  private void writeToFile(File file) {
    try {
      PrintWriter writer = new PrintWriter(new FileOutputStream(file));
      for (String name : values) {
        writer.println(name);
      }
      writer.close();
    } catch (FileNotFoundException e) {
      System.err.println("Konnte nicht in die Datei schreiben.");
      return;
    }
  }

  private void addInformation(String name) {
    values.add(name);

    JPanel panel = new JPanel();
    panel.setBorder(BorderFactory.createEtchedBorder());
    panel.add(new JLabel("Name: " + name));
    listPanel.add(panel);
    this.pack();
  }

  public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    if (source == addButton) {
      String name = JOptionPane.showInputDialog("Bitte Benutzernamen eingeben: ");
      String passwort = JOptionPane.showInputDialog("Bitte Passwort eingeben: ");
      String website = JOptionPane.showInputDialog("Bitte Namen der Website eingeben: ");
      addInformation(name);
    } else if (source == closeButton) {
      windowClosing(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
      this.setVisible(false);
    }
  }

  public void windowOpened(WindowEvent e) {

  }

  public void windowClosing(WindowEvent e) {
    if (values.isEmpty()) {
      return;
    }

    JFileChooser chooser = new JFileChooser();
    int retVal = chooser.showSaveDialog(this);
    if (retVal == JFileChooser.APPROVE_OPTION) {
      File file = chooser.getSelectedFile();
      writeToFile(file);
    }

    System.exit(0);

  }

  public void windowClosed(WindowEvent e) {

  }

  public void windowIconified(WindowEvent e) {

  }

  public void windowDeiconified(WindowEvent e) {

  }

  public void windowActivated(WindowEvent e) {

  }

  public void windowDeactivated(WindowEvent e) {

  }

  public static void main(String[] args) {
    final Passwortmanager pm = new Passwortmanager();
    java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
        pm.setVisible(true);
      }
    });
  }

}
 

eRaaaa

Top Contributor
Mhm, also was mir beim Überfliegen so auffällt ist:
- in loadFromFile rufst du valued.add(..) und danach addInformation auf, in addInfo rufst du allerdings nochmal values.add auf
Wenn du dann ndie Datei liest hast du also den Namen schon 2 x drin usw...
 

eRaaaa

Top Contributor
?? Dein Problem war doch, dass alles mehrfach auftaucht wenn du die Datei lädst?! Ich habe dir nur gesagt woran es liegen könnte, ein Lösungsvorschlag wurde hier doch noch gar nicht genannt...kommentiere Zeile 85 aus, das wäre ein Vorschlag, der zumindest auch bei mir funktioniert. Erkläre doch mal was du genau wünschst, was passiert, etc. Oder wie genau man dein Verhalten rekonstruieren kann?! Vllt. benutzt du dein eigenes Programm ja auch falsch *g*
Wenn du bei jedem Laden jeden Namen doppelt in den Vector schmeisst, ist es doch klar dass der dann öfters geschrieben, und beim nächsten Mal eben öfters gelesen wird..???:L
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Drag and Drop Problem auf Jpanel AWT, Swing, JavaFX & SWT 2
M Swing JPanel mittig, Problem AWT, Swing, JavaFX & SWT 5
P Problem beim erstellen eines JPanel in einem JFrame AWT, Swing, JavaFX & SWT 7
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
K Canvas3d - JPanel problem AWT, Swing, JavaFX & SWT 4
C Swing Problem mit dem JPanel AWT, Swing, JavaFX & SWT 2
A Problem mit JPanel AWT, Swing, JavaFX & SWT 4
S Swing Problem mit JCheckBox auf JPanel in JScrollPane AWT, Swing, JavaFX & SWT 8
P RAM-Auslastung - Problem. Zeichnen von JPEGs auf JPanel AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
E JPanel in BufferdImage rendern problem AWT, Swing, JavaFX & SWT 2
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
D Swing Problem mit Scrollbars in einem JPanel eines JWindows AWT, Swing, JavaFX & SWT 4
A Swing JPanel mit GridBagLayout Resize-problem AWT, Swing, JavaFX & SWT 1
W Swing Problem ( JPanel & JButton ) AWT, Swing, JavaFX & SWT 6
S GridBagLayout Problem mit dem JPanel AWT, Swing, JavaFX & SWT 5
M JPanel Layout Problem AWT, Swing, JavaFX & SWT 11
M Problem mit jPanel (FlowLayout) in ScrollPane AWT, Swing, JavaFX & SWT 4
ChaosNo1 Problem mit Komponente auf JPanel adden (beides abgeleitet) AWT, Swing, JavaFX & SWT 4
Noar Problem mit JPanel AWT, Swing, JavaFX & SWT 4
? Problem mit drawImage: bei Frame ok, bei JPanel nicht AWT, Swing, JavaFX & SWT 4
V Bild wird nicht auf JPanel gezeichnet; Java Problem AWT, Swing, JavaFX & SWT 10
B Problem bei der Erstellung einer Bilddatei aus einem JPanel AWT, Swing, JavaFX & SWT 16
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
T Editor auf Basis JFrame in ein JPanel wandeln - Problem! AWT, Swing, JavaFX & SWT 5
S Problem mit dem Zeichnen einer Linie auf einem JPanel AWT, Swing, JavaFX & SWT 30
G JPanel Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 4
D Layout Problem / JTree und JPanel AWT, Swing, JavaFX & SWT 4
G Problem mit JPanel und JList AWT, Swing, JavaFX & SWT 3
E Problem mit JPanel - Wann wird size berechnet? AWT, Swing, JavaFX & SWT 5
S Problem mit dem Layout - 3 JPanel's AWT, Swing, JavaFX & SWT 3
G JPanel-Problem AWT, Swing, JavaFX & SWT 4
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen


Oben