Geoschnute
Grünschnabel
Hallo zusammen,
ich habe folgendes Problem. Ich hab von meiner Dozentin eine Aufgabe bekommen.
Unzwar geht es darum ein Miniprogramm zu erstellen, das im Startfenster ein Label, vier Buttons und und eine JList beinhaltet.
Über einen JDialog sollen Daten eingegeben werden können, die danach in eine Datei geschrieben werden und von dort aus wieder ausgelesen werden können und danach in der JList erscheinen.
Soweit so gut. Schreiben und Lesen funktioniert auch wunderbar nur wenn ich neue Datensätze eingeb wird die JList nicht aktualisiert, die neue Liste mit den neuen Werten wird zwar erzeugt (Hab ich mir ausgeben lassen), nur ersetzt er die alte Liste nicht.
Ich sitze an diesem Problem jetzt bereits zwei Tage( ich lern noch nich lange Java
)
und weiß mir nicht mehr zu helfen.
Es wär echt toll wenn mir jemand helfen könnte!
Diese Klasse ist für das Hauptfenster verantwortlich (wird über einen Master aufgerufen):
Hier die Klasse die für den Dialog verantwortlich ist:
und hier die Klasse die schreibt und liest:
Ich weiß es ist ganz schön viel Code ich wusste nur leider nicht was ich rauslassen kann, sodass man den Fehler trotzdem findet...
Vielen Dank schon mal im Voraus
ich habe folgendes Problem. Ich hab von meiner Dozentin eine Aufgabe bekommen.
Unzwar geht es darum ein Miniprogramm zu erstellen, das im Startfenster ein Label, vier Buttons und und eine JList beinhaltet.
Über einen JDialog sollen Daten eingegeben werden können, die danach in eine Datei geschrieben werden und von dort aus wieder ausgelesen werden können und danach in der JList erscheinen.
Soweit so gut. Schreiben und Lesen funktioniert auch wunderbar nur wenn ich neue Datensätze eingeb wird die JList nicht aktualisiert, die neue Liste mit den neuen Werten wird zwar erzeugt (Hab ich mir ausgeben lassen), nur ersetzt er die alte Liste nicht.
Ich sitze an diesem Problem jetzt bereits zwei Tage( ich lern noch nich lange Java

und weiß mir nicht mehr zu helfen.
Es wär echt toll wenn mir jemand helfen könnte!
Diese Klasse ist für das Hauptfenster verantwortlich (wird über einen Master aufgerufen):
Code:
...
public class Ansicht extends JFrame
implements ActionListener, ListSelectionListener {
JButton bEinfuegen;
JButton bBearbeiten;
JButton bLoeschen;
JButton bSchliessen;
GridBagLayout gL = new GridBagLayout( ) ;
Container contentPane = getContentPane();
GridBagConstraints c = new GridBagConstraints( ) ;
DefaultListModel model = new DefaultListModel();
JLabel label = new JLabel("Versicherte");
static Ansicht oMasterAnsicht = null;
static Ansicht getInstance() {
if(oMasterAnsicht == null) {
oMasterAnsicht = new Ansicht();
}
return oMasterAnsicht;
}
public Ansicht() {
super("Versicherungsprogramm");
//showPane();
}
public void showPane() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane.setLayout(gL);
bEinfuegen = new JButton("Einfügen");
bSchliessen = new JButton("Schließen");
//--------------------------------------------------------
bBearbeiten = new JButton("Bearbeiten");
bLoeschen = new JButton("Löschen");
JList oList = new JList(model);
oList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
oList.addListSelectionListener(this);
createList(oList);
//---------------------------------------------------------
c.fill = GridBagConstraints.BOTH ;
c.insets = new Insets(12, 12, 12, 12);
bEinfuegen.addActionListener(this);
bBearbeiten.addActionListener(this);
bLoeschen.addActionListener(this);
bSchliessen.addActionListener(this);
//-------------------------------------------
c.insets = new Insets( 12, 12, 12, 12 );
c.gridheight = 1;
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 0;
add(label,c);
c.gridx = 2;
c.gridy = 1;
contentPane.add(bEinfuegen, c);
c.gridx = 0;
c.gridy = 1;
c.gridheight = 6;
c.gridwidth = 2;
c.weightx = 10;
//contentPane.add(oList,c);
contentPane.add(new JScrollPane(getOList(),
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), c);
c.weightx = 0;
c.gridheight = 1;
c.gridwidth = 3;
c.gridx = 2;
c.gridy = 3;
contentPane.add(bBearbeiten,c);
c.gridy = 4;
contentPane.add(bLoeschen,c);
c.gridy = 5;
contentPane.add(bSchliessen,c);
//-------------------------------------------- --
pack();
setSize(400,300);
setLocation(300,400);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == bEinfuegen) {
DialogWindow dialog = new DialogWindow(this, "Einfügen");
dialog.setVisible(true);
} else if(e.getSource() == bBearbeiten) {
// bearbeiten();
} else if(e.getSource() == bLoeschen) {
} else if(e.getSource() == bSchliessen) {
System.exit(0);
}
}
public void createList(JList oList) {
DefaultListModel model = (DefaultListModel)oList.getModel();
model.removeAllElements();
List<Object> oDataList = new ArrayList<Object>();
String sRecord;
String[] aRecords = null;
HandleData oHandleData = new HandleData();
oDataList = oHandleData.readContent();
Iterator iter = oDataList.iterator();
int i = 0;
while(iter.hasNext() ) {
Object oData = iter.next();
sRecord = oData.toString();
aRecords = sRecord.split("\t", 2);
model.addElement(aRecords[0] + " , " + aRecords[1]);
i++;
}
model.addElement(aRecords[0] + " , " + aRecords[1]);
//showPane();
}
public JList getOList() {
return oList;
}
public void setOList(JList list) {
oList = list;
}
.....
Code:
public class DialogWindow extends JDialog implements ActionListener {
private static final long serialVersionUID = -5836095604842076439L;
JButton bOk;
JButton bAbbrechen;
String sInputId = "0";
String sInputVorname = null;
String sInputNachname = null;
GridBagConstraints c = new GridBagConstraints( ) ;
JTextField oInputId = new JTextField("-1");
JTextField oInputVorname = new JTextField();
JTextField oInputNachname = new JTextField();
public DialogWindow(){};
public DialogWindow(Ansicht ansicht, String string) {
super(ansicht, string, true);
this.progressMethod();
}
public void progressMethod() {
GridBagLayout dL = new GridBagLayout();
Container contentPane = getContentPane();
contentPane.setLayout(dL);
// ------------------------------------------------------------
bOk = new JButton("Ok");
bAbbrechen = new JButton("Abbrechen");
JLabel label = new JLabel("Neuen Versicherten anlegen");
JLabel oLabelVorname = new JLabel("Vorname");
JLabel oLabelNachname = new JLabel("Nachname");
// ------------------------------------------------------------
// GridBagConstraints c = new GridBagConstraints( ) ;
c.fill = GridBagConstraints.BOTH ;
c.insets = new Insets(10, 10, 10, 10);
// ------------------------------------------------------------
bOk.addActionListener(this);
bAbbrechen.addActionListener(this);
// ------------------------------------------------------------
//Labels
c.insets = new Insets(5, 5, 5, 5);
c.gridheight = 1;
c.gridwidth = 2;
c.gridx = 0;
c.gridy = 0;
add(label, c);
c.gridheight = 1;
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;
add(oLabelVorname, c);
c.gridheight = 1;
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 2;
add(oLabelNachname, c);
c.gridx = 1;
c.gridy = 1;
contentPane.add(oInputVorname, c);
c.gridx = 1;
c.gridy = 2;
contentPane.add(oInputNachname, c);
// Buttons
c.gridx = 0;
c.gridy = 3;
contentPane.add(bOk, c);
c.gridx = 1;
c.gridy = 3;
contentPane.add(bAbbrechen, c);
// ------------------------------------------------------------
// ------------------------------------------------------------
pack();
setLocation(200, 200);
}
public void fillData(int iId) {
if(iId < 0)
JOptionPane.showMessageDialog(null, "Keinen Datensatz ausgewählt, neuer Datensatz wird angelegt");
HandleData oHandleData = new HandleData();
List<Object> oDataList = oHandleData.readContent();
Iterator iter = oDataList.iterator();
String sRecord;
String[] aRecords;
int i = -1;
while(iter.hasNext() ) {
i++;
Object oData = iter.next();
if(iId != i) continue;
sRecord = oData.toString();
aRecords = sRecord.split("\t", 2);
oInputId = new JTextField("" + i);
oInputVorname.setText(aRecords[0]);
oInputNachname.setText(aRecords[1]);
}
}
public void deleteData(int iId) {
if(iId < 0)
JOptionPane.showMessageDialog(null, "Keinen Datensatz ausgewählt");
HandleData oHandleData = new HandleData();
List<Object> oDataList = oHandleData.readContent();
Iterator iter = oDataList.iterator();
String sRecord;
String[] aRecords;
int i = -1;
while(iter.hasNext() ) {
i++;
Object oData = iter.next();
if(iId != i) continue;
sRecord = oData.toString();
aRecords = sRecord.split("\t", 2);
}
}
public void actionPerformed(ActionEvent e) {
try {
if(e.getSource() == bAbbrechen) {
setVisible(false);
dispose();
} else if(e.getSource() == bOk) {
try {
setCustomerData();
Ansicht oAnsicht = new Ansicht();
DefaultListModel model = new DefaultListModel();
JList list = new JList(model);
oAnsicht.setOList(list);
oAnsicht.createList(list);
} catch(IOException e1) {
e1.printStackTrace();
}
}
} catch(NullPointerException e2) {
JOptionPane.showMessageDialog(null, e2);
}
}
public int setCustomerData() throws IOException {
try {
sInputId = oInputId.getText();
sInputVorname = oInputVorname.getText();
sInputNachname = oInputNachname.getText();
String[] aRecord = {sInputVorname, sInputNachname};
int iId = Integer.parseInt(sInputId);
HandleData oData = new HandleData();
oData.saveData(aRecord, iId);
setVisible(false);
dispose();
return iId;
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
return 0;
}
}
Code:
public class HandleData {
String sWriteContent = null;
int iLineNumber = -1;
String sLine = null;
String sFileContent = null;
String[] aFileContent = null;
File oFile = new File("data.txt");
String sRecords;
List<Object> oDataList = new ArrayList<Object>();
public List<Object> readContent() {
try {
List<Object> oDataList = new ArrayList<Object>();
BufferedReader oIn = new BufferedReader(new FileReader(oFile));
LineNumberReader oLin = new LineNumberReader(oIn);
int iRowNumber = 0;
while((sRecords = oLin.readLine()) != null) {
iLineNumber = iRowNumber + 1;
try {
oDataList.set(iRowNumber, sRecords);
} catch(IndexOutOfBoundsException e) {
oDataList.add(sRecords);
}
iRowNumber++;
}
oLin.close();
return oDataList;
} catch(FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "Datei " + oFile + "konnte nicht gefunden werden");
} catch(IOException e1) {
e1.printStackTrace();
} catch(NullPointerException e3) {
JOptionPane.showMessageDialog(null, sRecords);
}
return oDataList;
}
public void writeContent(List oDataList) throws IOException {
/*
* Eingabewerte werden aus Dialogfenster werden übergeben
* und ein Datei geschrieben
*/
Writer oFileWriter = new FileWriter(oFile, false);
PrintWriter oWriteData = new PrintWriter(oFileWriter);
Iterator iter = oDataList.iterator();
while(iter.hasNext() ) {
Object oData = iter.next();
oWriteData.println(oData);
}
oWriteData.close();
}
public void saveData(String[] aRecord, int iId) throws IOException {
oDataList = this.readContent();
if(iId > -1) {
oDataList.set(iId, aRecord[0] + "\t" + aRecord[1]);
} else {
oDataList.add(aRecord[0] + "\t" + aRecord[1]);
}
this.writeContent(oDataList);
}
}
Ich weiß es ist ganz schön viel Code ich wusste nur leider nicht was ich rauslassen kann, sodass man den Fehler trotzdem findet...
Vielen Dank schon mal im Voraus
