tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
339
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xine xine ist offline Grünschnabel
    Registriert seit
    Jul 2004
    Beiträge
    3
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    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
     

  2. #2
    gigagon gigagon ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    23
    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-Code:
     for (int i 0<= list.length 1i++) {
                list[
    i] = new dateilist();

                list[
    i].setStatus((String) vector.get(i));
                list[
    i].setRechnername((String) vector.get(1));
                list[
    i].setInventarnummer((String) vector.get(2));
                list[
    i].setName((String) vector.get(3));
                list[
    i].setDatum((String) vector.get(4));
                list[
    i].setTyp((String) vector.get(5));
                list[
    i].setCpu((String) vector.get(6));
                list[
    i].setRam((String) vector.get(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?
     

  3. #3
    xine xine ist offline Grünschnabel
    Registriert seit
    Jul 2004
    Beiträge
    3
    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 :
    1
    
    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?
     

  4. #4
    gigagon gigagon ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    23
    Hi,

    dort wo du deine Label beschriften möchtest, könntest du es so machen:
    Code java:
    1
    2
    3
    4
    5
    
    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:

    Code java:
    1
    2
    3
    4
    5
    
    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
     

  5. #5
    xine xine ist offline Grünschnabel
    Registriert seit
    Jul 2004
    Beiträge
    3
    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
     

  6. #6
    gigagon gigagon ist offline Mitglied
    Registriert seit
    Mar 2010
    Beiträge
    23
    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.
    Code java:
    1
    2
    3
    4
    5
    6
    
    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
     

Ähnliche Themen

  1. C# Klassen und Objekte weiterreichen
    Von Cortadillo im Forum .NET Café
    Antworten: 5
    Letzter Beitrag: 01.06.07, 15:18
  2. MouseEvent weiterreichen
    Von slang im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 02.06.06, 01:49
  3. formulardaten per link weiterreichen
    Von webraccoon im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 26.10.04, 23:53
  4. Email-Adresse per URL weiterreichen
    Von Pollux im Forum PHP
    Antworten: 2
    Letzter Beitrag: 30.11.02, 16:16
  5. Value über Frames weiterreichen
    Von ctac im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 18.01.02, 13:29