Ok also mein Client beim Daten auflisten sieht so aus - das ganze läuft in einer switch anweisung.
case 2:
/**
* Optionsvariable wird zum Server gesendet
*/
writetoserver.writeInt(option);
writetoserver.flush();
/*
lblcnachricht.setText("Methode Dateiauflisten wird ausgefuehrt");
lblcnachricht.setLocation(25,10);
lblcnachricht.setVisible(true);
*/
/**
* ArrayList Größe wird vom Server gelesen
*/
arraysize = readfromserver.readInt();
/**
* Sollte die Größe der ArrayList > 0 sein wird g auf 0 gesetzt.
*/
if (arraysize > 0) {
btnweiter.setLocation(50, 270);
btnweiter.setVisible(true);
g = 0;
/**
* ArrayList wird vom Server empfangen und ausgegeben.
* Geschieht solange bis die ArrayList Größe erreicht wurde.
*/
while (g < arraysize) {
lbldatensatz.setText(readfromserver.readUTF());
lbldatensatz.setVisible(true);
lblname.setText(readfromserver.readUTF());
lblname.setVisible(true);
lblvorname.setText(readfromserver.readUTF());
lblvorname.setVisible(true);
lblanrede.setText(readfromserver.readUTF());
lblanrede.setVisible(true);
lblstrasse.setText(readfromserver.readUTF());
lblstrasse.setVisible(true);
lblplz.setText(readfromserver.readUTF());
lblplz.setVisible(true);
lblort.setText(readfromserver.readUTF());
lblort.setVisible(true);
lbltelefon.setText(readfromserver.readUTF());
lbltelefon.setVisible(true);
lblfax.setText(readfromserver.readUTF());
lblfax.setVisible(true);
lblbemerkung.setText(readfromserver.readUTF());
lblbemerkung.setVisible(true);
g++;
btnweiter.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
try {
writetoserver.writeUTF("weiter");
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
/**
* Rückmeldung des Servers wird ausgegeben.
*/
/*
lblsnachricht.setText(readfromserver.readUTF());
lblsnachricht.setLocation(25,300);
lblsnachricht.setVisible(true);
*/
}
else {
lblsnachricht2.setText(readfromserver.readUTF());
lblsnachricht2.setLocation(25,10);
lblsnachricht2.setVisible(true);
}
/**
* Am Ende wird das Menue wieder angezeigt
*/
//Zeigemenue();
break;
Dazu der passende Server ausschnitt:
case 2:
System.out.println("Client " + clientnr
+ " ruft Datenauflisten ab");
log.Schreibelog("Client " + clientnr
+ " ruft Datenauflisten ab");
/**
* ArrayList Größe wird bestimmt und an den Client gesendet
*/
arraysize = adressliste.size();
writetoclient.writeInt(arraysize);
writetoclient.flush();
/**
* Enthaelt die ArrayList mindestens 1 Element wird diese
* ausgelesen und an den Client übergeben.
*/
if (arraysize > 0) {
g = 0;
for (ConnectionHandler adressen : adressliste) {
adressliste.get(g);
writetoclient.writeUTF("Datensatz Nr. " + (g + 1)
+ "\n");
writetoclient.writeUTF("Name: " + adressen.name);
writetoclient.writeUTF("Vorname: "
+ adressen.vorname);
writetoclient
.writeUTF("Anrede: " + adressen.anrede);
writetoclient.writeUTF("Strasse: "
+ adressen.strasse);
writetoclient.writeUTF("PLZ: " + adressen.plz);
writetoclient.writeUTF("Ort: " + adressen.ort);
writetoclient.writeUTF("Telefon: "
+ adressen.telefon);
writetoclient.writeUTF("Fax: " + adressen.fax);
writetoclient.writeUTF("Bemerkung: "
+ adressen.bemerkung + "\n");
/*writetoclient
.writeUTF("Fuer naechsten Datensatz bitte Enter "
+ "druecken");*/
String weiter = readfromclient.readUTF();
if(weiter.equals("weiter")){
g++;
}
}
log
.Schreibelog("Client "
+ clientnr
+ " Methode Datenauflisten wurde erfolgreich ausgefuehrt");
/**
* Rückmeldung wird an den Client gesendet.
*/
writetoclient
.writeUTF("Methode Datenauflisten erfolgreich ausgefuehrt\n");
System.out.println("Client " + clientnr
+ " Datenauflisten abgeschlossen");
/**
* Sollt die ArrayList leer sein - wird dies dem Client
* mitgeteilt.
*/
} else {
/**
* Rückmeldung wird an den Client gesendet
*/
writetoclient
.writeUTF("Keine Daten zum Anzeigen vorhanden!\n");
writetoclient.flush();
log.Schreibelog("Client " + clientnr
+ " Keine Daten zum Anzeigen vorhanden!");
System.out.println("Client " + clientnr
+ " keine Daten zum Anzeigen vorhanden!");
System.out.println("Client " + clientnr
+ " Datenanauflisten abgeschlossen");
}
break;
Und wenn ich jetzt speichern will - hier der Client:
case 3:
/**
* Optionsvariable wird zum Server gesendet
*/
writetoserver.writeInt(option);
writetoserver.flush();
/*
lblcnachricht.setText("Methode Dateisichern wird ausgefuehrt");
lblcnachricht.setLocation(25,10);
lblcnachricht.setVisible(true);
*/
/**
* Wenn der Server eine 1 sendet dann ist die Datei bereits
* vorhanden und der Client muss das Überschreiben bestätigen.
* Danach wird das Ergebnis ausgegeben.
*/
int dateida = readfromserver.readInt();
if (dateida == 1) {
lblsnachricht.setText(readfromserver.readUTF());
lblsnachricht.setLocation(25,10);
lblsnachricht.setVisible(true);
btnja.setLocation(50, 40);
btnnein.setLocation(150, 40);
btnja.setVisible(true);
btnnein.setVisible(true);
btnja.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
try {
jn = "j";
//writetoserver.writeUTF("j");
//writetoserver.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
});
btnnein.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
try {
jn = "n";
//writetoserver.writeUTF("n");
//writetoserver.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
});
if(jn.equals("j")){
writetoserver.writeUTF(jn);
}
else if(jn.equals("n")){
writetoserver.writeUTF(jn);
}
lblsnachricht2.setText(readfromserver.readUTF());
lblsnachricht2.setLocation(25,70);
lblsnachricht2.setVisible(true);
}
/**
* Liefert der Server etwas anderes als die 0 zurück - wurde die
* Datei gespeichert und die Rückmeldung des Servers wird
* ausgegeben
*/
else {
lblsnachricht.setText(readfromserver.readUTF());
lblsnachricht.setLocation(25,10);
lblsnachricht.setVisible(true);
}
/**
* Am Ende wird das Menue wieder angezeigt
*/
//Zeigemenue();
break;
und der Server:
case 3:
System.out.println("Client " + clientnr
+ " ruft Dateisichern ab");
log.Schreibelog("Client " + clientnr
+ " ruft Dateisichern ab");
try {
/**
* Es wird ein neuer Filehandler erstellt - welcher auf
* die Datei "adreli.csv" verweist.
*/
File datei = new File(Server.dateiname);
/**
* Wenn die Datei bereits vorhanden ist wird dies dem
* Client mitgeteilt.
*/
if (datei.exists()) {
writetoclient.writeInt(1);
writetoclient
.writeUTF("Datei bereits vorhanden - überschreiben?");
/**
* Die Eingabe des Clients wird eingelesen.
*/
jn = readfromclient.readUTF().toLowerCase();
System.out.println(jn);
/**
* Wenn der Inhalt der Variable jn = j ist wird der
* Inhalt der Arraylist in die Datei geschrieben.
*/
if (jn.equals("j")){
BufferedWriter dateischreiben = new BufferedWriter(
new FileWriter(Server.dateiname));
dateischreiben
.write("Name,Vorname,Anrede,Strasse,PLZ,Ort,Telefon,"
+ "Fax,Bemerkung");
dateischreiben.newLine();
int g = 0;
for (ConnectionHandler aw : adressliste) {
adressliste.get(g);
dateischreiben.write(aw.name + ",");
dateischreiben.write(aw.vorname + ",");
dateischreiben.write(aw.anrede + ",");
dateischreiben.write(aw.strasse + ",");
dateischreiben.write(aw.plz + ",");
dateischreiben.write(aw.ort + ",");
dateischreiben.write(aw.telefon + ",");
dateischreiben.write(aw.fax + ",");
dateischreiben.write(aw.bemerkung + ",");
dateischreiben.newLine();
g++;
}
dateischreiben.close();
/**
* Rückmeldung wird an den Client gesendet
*/
writetoclient.writeUTF("Daten gesichert!");
writetoclient.flush();
} else if (jn.equals("n")) {
/**
* Sollte der Client n übertragen wird das
* Speichern abgebrochen und die Rückmeldung
* wird an den Client gesendet
*/
writetoclient
.writeUTF("Das Speichern wurde nicht abgeschlossen!");
writetoclient.flush();
}
else {
/**
* Sollte der Client eine falsche Eingabe (nicht
* j oder n) senden wird eine Fehlermeldung an
* den Client gesendet.
*/
writetoclient
.writeUTF("Falsche Eingabe - bitte wiederholen!");
writetoclient.flush();
}
}
/**
* Sollte die Datei noch nicht vorhanden sein - wird
* diese direkt gespeichert
*/
else {
writetoclient.writeInt(0);
BufferedWriter dateischreiben = new BufferedWriter(
new FileWriter(Server.dateiname));
dateischreiben
.write("Name,Vorname,Anrede,Strasse,PLZ,Ort,Telefon,"
+ "Fax,Bemerkung");
dateischreiben.newLine();
int g = 0;
for (ConnectionHandler aw : adressliste) {
adressliste.get(g);
dateischreiben.write(aw.name + ",");
dateischreiben.write(aw.vorname + ",");
dateischreiben.write(aw.anrede + ",");
dateischreiben.write(aw.strasse + ",");
dateischreiben.write(aw.plz + ",");
dateischreiben.write(aw.ort + ",");
dateischreiben.write(aw.telefon + ",");
dateischreiben.write(aw.fax + ",");
dateischreiben.write(aw.bemerkung + ",");
dateischreiben.newLine();
g++;
}
dateischreiben.close();
/**
* Rückmeldung wird an den Client gesendet
*/
writetoclient.writeUTF("Daten gesichert!");
writetoclient.flush();
}
}
/**
* Sollte die Datei nicht vorhanden sein - wird dies als
* Fehlermeldung ausgegeben
*/
catch (FileNotFoundException dng) {
writetoclient.writeUTF(dng.getMessage());
}
/**
* Sollte die Eingabe im falschen Format sein - wird dies
* als Fehlermeldung ausgegeben
*/
catch (IOException ff) {
writetoclient.writeUTF(ff.getMessage());
}
log
.Schreibelog("Client "
+ clientnr
+ " Methode Dateisichern wurde erfolgreich ausgefuehrt");
System.out.println("Client " + clientnr
+ " Dateisichern abgeschlossen");
break;
Also sockets hab ich DataInput/Output Streams ...
Ich möchte im grunde nur das wenn ich die Button drücke das was ich dann übertrage auch gemacht wird - ich bin schon mal soweit das die Buttons und auch die ActionListener angelegt werden - aber nicht ausgeführt werden.
Wenn ich nach den ActionListener die jeweilige Angabe mache dann gehts - nur dann wärs ja keine auswahl
Gruß
Sk1nwalk3r