Hallo zusammen,
ich hab mich mal hier angemeldet weil ich ein Problem habe das ich seit 3 Tagen nicht gelöst bekomme.
Dieser Code:
sorgt dafür das sich das Hauptfenster nachdem man Öffnen geklickt hat so oft öffnet wie in der "passwörter.txt" zeilen enthalten sind. Sprich habe ich insgesamt 5 datenzeilen in der txt wird danach auch 5 mal das Hauptfenster geöffnet. Ich habe nach unzähligem probieren keine lösung gefunden um das zu unterbinden. Das Lustige ist ich hab ein weiteres Fenster das genau das selbe macht mit dem unterschied das ich da noch mit dem Filewriter die Datei erzeuge. Aber auch dieses Fenster läd die daten nach nem Buttonklick aber öffnet das Hauptfenster nicht neu.
Da es insgesamt viel code ist poste ich nur mal die klasse mit dem genannten Problem und hoffe ihr habt so ne antwort parat.
Der Code ist noch sehr Spagettihaft. Bitte verzeiht mir das bin erst seit 8 Wochen in Java und hab noch nicht die übung.
Vielen Dank schonmal für eure Hilfe
ich hab mich mal hier angemeldet weil ich ein Problem habe das ich seit 3 Tagen nicht gelöst bekomme.
Dieser Code:
Java:
package pw_generator_neu;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.*;
public class Save extends JDialog implements ActionListener, ItemListener
{
ArrayList<Passwort> lst = new ArrayList<Passwort>();
String txt = "passwörter.txt";
public static void laden(String datei, ArrayList<Passwort> daten)
{
FileReader fr = null;
BufferedReader br = null;
try
{
fr = new FileReader(datei);
br = new BufferedReader(fr);
String zeile = "";
try
{
while((zeile = br.readLine()) != null)
{
String[] werte = zeile.split(",");
String portal = werte[0];
String benutzerkennung = werte[1];
String passwort = werte[2];
Passwort temp = new Passwort(portal, benutzerkennung, passwort);
daten.add(temp);
}
}
catch(NullPointerException ex)
{
;
}
}
catch(IOException ex)
{
System.out.println(ex.getMessage());
}
finally
{
try
{
br.close();
}
catch(IOException ex)
{
System.out.println(ex.getMessage());
}
}
}
private Color farbe2 = new Color(108, 166, 205);
private Color farbe3 = new Color(000, 000, 000);
private Border bo;
private TitledBorder tbo;
private JPanel pnlP;
private JLabel lblF, lblK, lblP;
private JTextField txtK, txtP;
private JButton btnÖffnen, btnSchliessen;
private JComboBox<Passwort> cbPasswort;
public Save(JFrame elternfenster, String beschriftung)
{
super(elternfenster, beschriftung, true);
this.setSize(400, 275);
this.setResizable(false);
this.setLayout(null);
this.getContentPane().setBackground(farbe2);
this.setLocationRelativeTo(elternfenster);
bo = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
tbo = BorderFactory.createTitledBorder(bo, "Gespeicherte Passwörter");
tbo.setTitleFont(new Font("Arial",Font.BOLD,14));
tbo.setTitleColor(farbe3);
pnlP = new JPanel();
pnlP.setLayout(null);
pnlP.setBounds(7, 25, 380, 150);
pnlP.setBorder(tbo);
pnlP.setBackground(farbe2);
this.getContentPane().add(pnlP);
lblF = new JLabel("Bezeichnung");
lblF.setBounds(25, 35, 100, 20);
lblF.setForeground(farbe3);
pnlP.add(lblF);
lblK = new JLabel("Benutzerkennung");
lblK.setBounds(25, 60, 100, 20);
lblK.setForeground(farbe3);
pnlP.add(lblK);
lblP = new JLabel("Passwort");
lblP.setBounds(25, 85, 100, 20);
lblP.setForeground(farbe3);
pnlP.add(lblP);
cbPasswort = new JComboBox<Passwort>();
cbPasswort.setBounds(150, 35, 150, 20);
this.getContentPane().add(cbPasswort);
pnlP.add(cbPasswort);
cbPasswort.addItemListener(this);
txtK = new JTextField();
txtK.setBounds(150, 60, 150, 20);
txtK.setBorder(null);
txtK.setBackground(farbe2);
pnlP.add(txtK);
txtP = new JTextField();
txtP.setBounds(150, 85, 150, 20);
txtP.setBorder(null);
txtP.setBackground(farbe2);
txtP.setEditable(false);
pnlP.add(txtP);
btnÖffnen = new JButton("Öffnen");
btnÖffnen.setBounds(95, 200, 100, 30);
this.getContentPane().add(btnÖffnen);
btnÖffnen.addActionListener(this);
btnSchliessen = new JButton("Abbrechen");
btnSchliessen.setBounds(205, 200, 100, 30);
this.getContentPane().add(btnSchliessen);
btnSchliessen.addActionListener(this);
this.setVisible(true);
}
private void aktualisieren()
{
}
public void itemStateChanged(ItemEvent ie)
{
}
public void actionPerformed(ActionEvent e)
{
String welcher = e.getActionCommand();
if(welcher.equals("Öffnen"))
{
laden(txt, lst);
}
if(welcher.equals("Abbrechen"))
{
this.dispose();
}
}
}
sorgt dafür das sich das Hauptfenster nachdem man Öffnen geklickt hat so oft öffnet wie in der "passwörter.txt" zeilen enthalten sind. Sprich habe ich insgesamt 5 datenzeilen in der txt wird danach auch 5 mal das Hauptfenster geöffnet. Ich habe nach unzähligem probieren keine lösung gefunden um das zu unterbinden. Das Lustige ist ich hab ein weiteres Fenster das genau das selbe macht mit dem unterschied das ich da noch mit dem Filewriter die Datei erzeuge. Aber auch dieses Fenster läd die daten nach nem Buttonklick aber öffnet das Hauptfenster nicht neu.
Da es insgesamt viel code ist poste ich nur mal die klasse mit dem genannten Problem und hoffe ihr habt so ne antwort parat.
Der Code ist noch sehr Spagettihaft. Bitte verzeiht mir das bin erst seit 8 Wochen in Java und hab noch nicht die übung.
Vielen Dank schonmal für eure Hilfe
Zuletzt bearbeitet von einem Moderator: