Objekte weiterreichen

xine

Grünschnabel
Hi,
ich bin momentan am tüftel für ein Java Programm, mit welchem ich eine text Datei, ";" getrennt; auslese und die einzelnen Werte abändern kann, sowie neue hinzufügen. das auslesen habe ich nun über den Buffered reader realisiert und ich lege für jede Zeile ein eigenes Objekt meiner Klasse dateilist an & schreibe während dessen ein Feld dieses Objektes in eine Listbox.
Wenn der Prozess, des einlesens, abgeschlossen ist. Möchte ich beim anklicken eines Wertes der Listbox, die nebenstehenden Textfelder mit den dazugehörigen restlichen Informationen aus dem Objekt "füttern", doch leider kennt er dort meine Objekte nicht mehr :( und ich weiß nicht wie ich diese veröffentliche sodass ich weiter darauf zugreifen kann, ich hoffe ihr könnt mir helfen.

Meine Klasse, welche die Objekte bildet (ist um Methoden und Variabeln beshcnitten, da es eh imemr das gleiche nur in grün ist)
Code:
public class dateilist {

    private String Status;
    private String Rechnername;
    private String Inventarnummer;

    public void setStatus(String Status){
        this.Status= Status;
    }
    public String getStatus(){
        return this.Status;
    }

    public void setRechnername(String Rechnername){
        this.Rechnername= Rechnername;
    }

}

Datei einlesen
Code:
public class iofile {
    public static void ifile() {
        int Counter = 0;
        String zeile = null;
        String[] parts = null;
        Vector vector = new Vector();

        try {
            BufferedReader in = new BufferedReader(new FileReader("test.txt"));

            while ((zeile = in.readLine()) != null) {
                if (!zeile.equals("")) {
                    Counter++;
                    System.out.println(zeile);
                    parts = zeile.split(";");

                    vector.add(parts[0]);
                    vector.add(parts[1]);
                    vector.add(parts[2]);
                    vector.add(parts[3]);
                    vector.add(parts[4]);
                    vector.add(parts[5]);
                    vector.add(parts[6]);
                    vector.add(parts[7]);
                    fillList(parts[1]); // füllt meine Listbox
                }
            }
            in.close();
        } catch (Exception e) {
        }
      obj.genobj(vector, Counter);
      
    }
}
und meine objekt generierung
Code:
public class obj {
public static void genobj(Vector vector, int counter){
      dateilist[] list = new dateilist[counter];
        for (int i = 0; i <= list.length - 1; i++) {
            list[i] = new dateilist();

            list[i].setStatus((String) vector.get(i));
            list[i].setRechnername((String) vector.get(i + 1));
            list[i].setInventarnummer((String) vector.get(i + 2));
            list[i].setName((String) vector.get(i + 3));
            list[i].setDatum((String) vector.get(i + 4));
            list[i].setTyp((String) vector.get(i + 5));
            list[i].setCpu((String) vector.get(i + 6));
            list[i].setRam((String) vector.get(i + 7));
        }
}
}
danach möchte ich wenn ich meine listbox, die im hauptklasse ist, anklicke, das die text felder daben die werte de dazugehörigen objektes annehmen
zbsp
klicke ich das 1 Item an dann soll der Status daneben aus "list[1|.getStatus;" erfolgen, doch er kennt dies dort nicht mehr :( wie gebe ich diese Objekte weiter? bzw wie greife ich da weiter drauf zu.

Vielen Dank & sorry für den vll wirren Text

Martin
 
Hi,

erstmal ne Frage, warum trägst du die Daten aus der Datei nicht direkt in dein Objekt ein? Das wäre erstmal übersichtlicher und leichter.
Dann hättest du eine Liste aus deinen Objekten, die jedoch schon den Inhalt enthalten.
Später kannst du sie ja über das GUI bearbeiten.

Zu deiner schleife
PHP:
 for (int i = 0; i <= list.length - 1; i++) {
            list[i] = new dateilist();

            list[i].setStatus((String) vector.get(i));
            list[i].setRechnername((String) vector.get(i + 1));
            list[i].setInventarnummer((String) vector.get(i + 2));
            list[i].setName((String) vector.get(i + 3));
            list[i].setDatum((String) vector.get(i + 4));
            list[i].setTyp((String) vector.get(i + 5));
            list[i].setCpu((String) vector.get(i + 6));
            list[i].setRam((String) vector.get(i + 7));
        }

Du gehst zwar in ein neues Listenfeld, aber beim Vektor immer nur einen weiter. Also ist beim nächsten Objekt ist doch dann der eigentliche Status-Wert im Rechnername oder?
 
Hey,
ja das ist eine gute Frage, habs mal geändert so das ich die Werte direkt in die Objekte schreibe :) danke für den Hinweis.

jedoch bleibt meine eigentliche Fragestellung bestehn, angenommen ich drücke einen Button auf meiner GUI und dieser Button soll meine Labels aktualisieren, dann mach ich das ja normalerweise mit
Code:
meinlabel.setName(hier muss mein objekt aufruf hin)
doch wie gebe ich dieser funktion mein objekt - bsp. list[3]- bekannt, sodass ich den Wert für das Label daher entnehmen kann?
 
Hi,

dort wo du deine Label beschriften möchtest, könntest du es so machen:
Java:
public static dateilist[] ifile() {
  //hier lädst du deine Daten aus der File in die Objekte und speicherst diese in der dateilist[]

  return dateilist; // also deine komplette Liste mit gefüllten Objekten
}

mit z.B. dem folgenden-Code könntest du die Werte in dein lable packen:

Java:
dateilist[] list = iofile.ifile(); // Liste laden

// Label bezeichnen
meinlabel.setName(list[i]);
meinlabel2.setName(list[i]);

(Ich persönlich würde Klassennamen immer Groß schreiben, sonnst kann man echt durcheinander kommen, wenn Variablen auch so heissen.)


MFG
 
Hey,

danke dir das klappt soweit, aber eine verständnisfrage habe ich noch, erzeuge ich dadurch nicht immer wieder ne neue Instanz des jeweiligen Objektes?


gruß
Martin
 
Hi,

also du erzeugst nur eine neue Instanz, wenn du mit new ObjectName() arbeitest.
in der Variable wird eine referenz auf dieses Objekt gespeichert, also sozusagen eine Adresse im Speicher an dem das Objekt abgelegt ist.
In der Liste sind somit die Referenzen gespeichert, mit der du das angelegte Objekt erreichen und z.B. die Werte abfragen kannst.
Java:
Object a = new Object(); // ein Objekt wird erstellt
Object b = a; // du kopierst die Referenz auf das Objekt, nicht das Objekt selbst
a.setName("Aha");
b.setName("Blubb"); 

a.getName(); // liefert den Namen Blubb

Evtl. hier noch mal nachlesen

mfg
 
Zurück