JList aktualisieren geht nicht

Tonicc

Grünschnabel
Hi, ich habe eon recht großes Problem mit meinem Prog:
Ich möchte mit dem Filechooser eine Datei öffnen und diese dann auf einer geordneten JList darstellen. Das Datamodell wird zwar aktualisiert, aber es wird einfach nichts in der JlList angezeigt. Ich denke das Problem liegt irgendwo in dieser Methode:

Code:
public void actionPerformed( ActionEvent event){
                                /**
                                * Methode zum öffnen einer Datei
                                *
                                */
                               
                               
                                        JFileChooser waehlen = new JFileChooser();
                                        //Vector inhalt = new Vector();
                                        waehlen.setMultiSelectionEnabled(false);
                                          try {
                                                          if (waehlen.showOpenDialog(fenster) == JFileChooser.APPROVE_OPTION)
                                                          {
                                                                 
                                                                  String dateiname = waehlen.getSelectedFile().getName();
                                                                  SwingFenster fensterobjekt = new SwingFenster();
                                                                  System.out.println ("Datei "+waehlen.getSelectedFile()+" geöffnet.");
                                                                  Vector <String> dateiinhalt = Streams.Dateilesen(waehlen.getSelectedFile());
                                                                 
                                                                 
                                                                  for  (int i=0; i < fensterobjekt.karte.length; i++){
                                                                          JListData data = fensterobjekt.makeDataModel(fensterobjekt.karte[i],waehlen.getSelectedFile());
                                                                          liste = fensterobjekt.jliste[i];
                                                                          //System.out.println(data.getSize());
                                                                          //System.out.println(fensterobjekt.karte[i]);
                                                                          System.out.println("vorher: "+liste.getModel().getElementAt(0));
                                                                          //fensterobjekt.jliste[i].setModel(data);
                                                                          liste.setModel(data);
                                                                          liste.repaint();
                                                                          //fensterobjekt.jliste[i].updateUI();
                                                                         
                                                                          System.out.println("nachher: "+liste.getModel().getElementAt(0));
                                                                         
                                                                         
                                                                          }
                                                                  //fensterobjekt.fensterupdaten();
                                                                  System.out.println("test::: "+fensterobjekt.jliste[0].getModel().getElementAt(0));
                                                                 
                                                                 
                                                                 
                                                          }
                                                         
                                          }
                                          catch (NullPointerException exp){
                                                  String nachricht = "Es wurde keine Datei ausgewählt!";
                                                  JOptionPane.showMessageDialog(fenster, nachricht, "Warnung",0);
                                                  System.out.println(exp.getMessage());
                                          }
                               
                        }

Hier noch mein restlicher Code (ich weiß es ist viel, aber wäre nett wenn mir trotzdem jemand helfen könnte:



Die Klasse in der das Menü und die Actionlistener sind (hier ist auch das Problem mit dem öffnen+hinzufügen)

Code:
package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import util.Streams;

public class Menu extends JMenuBar{               

        /**
        *
        */
        private static final long serialVersionUID = 1L;
        JList liste;

        //public String[] kartenlänge = SwingFenster.getkartelength();
        //public  JListData[] dataModel = SwingFenster.getdatamodell();
         
       
                //static  Vector <String> data = new Vector<String>(10,1);
        //JListData data = new JListData();
        //SwingFenster fenster2 = new SwingFenster();
        //Vector dlist = null;
        //Menu menu = null;
               
               
                JMenu                                  // PullDownMenu
                        mnuFile = new JMenu("Datei"),
                        mnuNamen = new JMenu("Namen"),
                        mnulookfeel = new JMenu("look&feel"),
                        mnuInfo = new JMenu("Info");
               
                //Überpunkte

                       
                JMenuItem
                        mniFileOpen        = new JMenuItem("öffnen"),
                        mniFileSave        = new JMenuItem("sichern"),
                        mniEnde                = new JMenuItem("beenden");
       
                JMenuItem
                        mnieinfügen        = new JMenuItem("einfügen"),
                        mnilöschen        = new JMenuItem("löschen"),
                        mniändern        = new JMenuItem("ändern");
               
                JMenuItem
                        mniWindows        = new JMenuItem("Windows"),
                        mniMetal        = new JMenuItem("Metal"),
                        mniMotif        = new JMenuItem("Motif");
                       
                JMenuItem
                        mniAutor        = new JMenuItem("Autor"),
                        mniHelp        = new JMenuItem("Hilfe");
       
                               
                SwingFenster fenster = null;
               
    // Konstruktor
        public Menu(JFrame f){
                       
               
                fenster = (SwingFenster)f; // Referenz auf das Fenster
               
               
                System.out.println("Menueleiste konstruiert.");
       
                       
                // -----------------------------------------------
                mnuFile.add( mniFileOpen );        // Item auf PulldownMenu legen
                mnuFile.add( mniFileSave );        // Item auf PulldownMenu legen
                mnuFile.addSeparator();                //Separator einfügen
                mnuFile.add( mniEnde );                // Item auf PulldownMenu legen
               
                // Listener anbinden ------------------------
                   mniFileOpen.addActionListener(new ActionAdapterread());  // ActionAdapter um zu lesen
                   mniFileSave.addActionListener(new ActionAdapterwrite()); // ActionAdapter um zu schreiben
                   mniEnde.addActionListener(new ActionAdapterExit());      // ActionAdapter um zu beenden
                           
                  
                 mnuNamen.add(mnieinfügen);        // Item auf PulldownMenu legen
                 mnuNamen.add(mnilöschen);        // Item auf PulldownMenu legen
                 mnuNamen.add(mniändern);        // Item auf PulldownMenu legen
                
                 mnieinfügen.addActionListener(new ActionAdaptereinfügen());  // ActionAdapter um zu lesen
                   mnilöschen.addActionListener(new ActionAdapterlöschen()); // ActionAdapter um zu schreiben
                   mniändern.addActionListener(new ActionAdapterändern());      // ActionAdapter um zu beenden
                           
                  
                mnulookfeel.add( mniWindows );        // Item auf PulldownMenu legen
                   mnulookfeel.add( mniMetal );        // Item auf PulldownMenu legen
                   mnulookfeel.add( mniMotif );        // Item auf PulldownMenu legen
       
                // Listener anbinden ------------------------
                   mniWindows.addActionListener(new ActionAdapterchange());         // ActionAdapter zum ändern des look&feel
                   mniMetal.addActionListener(new ActionAdapterchange());                // ActionAdapter zum ändern des look&feel
                   mniMotif.addActionListener(new ActionAdapterchange());                // ActionAdapter zum ändern des look&feel
               
                   mnuInfo.add(mniAutor);// Item auf PulldownMenu legen
                   mnuInfo.add(mniHelp);// Item auf PulldownMenu legen
                   mniAutor.addActionListener(new ActionAdapterAutor());                // ActionAdapter für Autoreninfos
                   mniHelp.addActionListener(new ActionAdapterHelp());                        // ActionAdapter der Hilfefunktion
                  
                          
                  
               
                   // PullDownMenu auf MenuLeiste legen
                this.add( mnuFile );       
                //PullDownMenu auf MenuLeiste legen
                this.add( mnuNamen );
                  // PullDownMenu auf MenuLeiste legen
                this.add( mnulookfeel );       
                 // PullDownMenu auf MenuLeiste legen
                this.add(mnuInfo);
             
        }// end of constructor

       
       
        //------------- ActionListener Interfaces --------------------

        //        Actionadapter für das Einfügen von Namen
        class ActionAdaptereinfügen implements ActionListener{
               
                public void actionPerformed(ActionEvent arg0) {
                        SwingFenster fensterobjekt = new SwingFenster();
                        String s = (String) JOptionPane.showInputDialog(
                    fenster,
                    "Bitte geben sie den neuen Eintrag ein",
                    "Neuer Eintrag",
                    JOptionPane.INFORMATION_MESSAGE,
                    null,
                    null,
                    "Name;Vorname");
//                        If a string was returned, say so.
                        if ((s != null) && (s.length() > 0)) {
                               
                                System.out.println("eingefügt wird "+ s);
                                String[] karte =fensterobjekt.karte;
                                for (int k=0; k<karte.length; k++){
                                        if (karte[k].contains(s.substring(0,1))) {
                                                System.out.println("ja");
                                               
                                                //fensterobjekt.datamodellarray[k].addElement(s);
                                                System.out.println(fensterobjekt.datamodellarray[k].getElementAt(0));
                                        }
                                               
                                }
                               
                           
                        }

//                        If you're here, the return value was null/empty.
                        else
                        System.out.println("Bitte etwas eingeben!");
               
               
               
                }
        }
       
        //        Actionadapter für das Löschen von Namen
        class ActionAdapterlöschen implements ActionListener{
               
                public void actionPerformed(ActionEvent arg0) {
                       
                        Object[] possibilities = {"ham", "spam", "yam"};
                        String o = (String)JOptionPane.showInputDialog(
                                            fenster,
                                            "Complete the sentence:\n"
                                            + "\"Green eggs and...\"",
                                            "Customized Dialog",
                                            JOptionPane.PLAIN_MESSAGE,
                                            null,
                                            possibilities,
                                            "ham");

                        //String s = (String) JOptionPane.showConfirmDialog(arg0, arg1)
//                        If a string was returned, say so.
                        if ((o != null) && (o.length() > 0)) {
                            System.out.println("Green eggs and... " + o + "!");
                           
                        }

//                        If you're here, the return value was null/empty.
                        else System.out.println("Come on, finish the sentence!");
                }
        }
        //        Actionadapter für das Ändern von Namen
        class ActionAdapterändern implements ActionListener{
               
                public void actionPerformed(ActionEvent arg0) {
                       
                       
                       
                        //JOptionPane.showInputDialog(
                                // fenster, "Eintrag ändern");
                       
                }
        }
       
        //        Actionadapter für die Autordaten
        class ActionAdapterAutor implements ActionListener{
               
                public void actionPerformed(ActionEvent arg0) {
                       
                       
                        JOptionPane.showMessageDialog(
                                 fenster, "Autordaten");
                }
        }
        //        Actionadapter für die Hilfe
        class ActionAdapterHelp implements ActionListener{
               
               
                public void actionPerformed(ActionEvent arg0) {
                        /**
                        * Methode zum Anzeigen der Hilfe
                        *
                        */
                        JOptionPane.showMessageDialog(
                                 fenster, "Datei: öffnet und speichert Dateien. Schließen beendet das Programm.\n" +
                                                 "look&feel: ändert das Aussehn des Fensters.\n" +
                                                 "Info: Infos über den Autor und die Hilfe.\n" +
                                                 "ok button: schreibt den Namen und die Email in die Konsole.\n" +
                                                 "klicken auf die restlichen Items: gibt ihren Namen auf der Konsole aus.");
                }
        }
       
        //Actionadapter zum Beenden
        class ActionAdapterExit implements ActionListener{
               
                public void actionPerformed(ActionEvent arg0)
                /**
                * Methode zum beenden
                *
                */
                {
                System.exit(0);
                }
        }
        //ActionAdapter für look&feel änderung
        class ActionAdapterchange implements ActionListener{
                       
                public void actionPerformed(ActionEvent ev)
                {
                        /**
                        * Methode um das look and feel einzustellen
                        *
                        */
                        Object quelle = ev.getSource();
                       
                        if (quelle == mniWindows)
                        {
                                fenster.updateLAF("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                        }
                        if (quelle == mniMetal)
                        {
                                fenster.updateLAF("javax.swing.plaf.metal.MetalLookAndFeel");
                        }
                        if (quelle == mniMotif)
                        {
                                fenster.updateLAF("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                        }
               
                }
       
        }       
       
       
                //ActionAdapter zum lesen
        class ActionAdapterread implements ActionListener{
               
                       
                        public void actionPerformed( ActionEvent event){
                                /**
                                * Methode zum öffnen einer Datei
                                *
                                */
                               
                               
                                        JFileChooser waehlen = new JFileChooser();
                                        //Vector inhalt = new Vector();
                                        waehlen.setMultiSelectionEnabled(false);
                                          try {
                                                          if (waehlen.showOpenDialog(fenster) == JFileChooser.APPROVE_OPTION)
                                                          {
                                                                 
                                                                  String dateiname = waehlen.getSelectedFile().getName();
                                                                  SwingFenster fensterobjekt = new SwingFenster();
                                                                  System.out.println ("Datei "+waehlen.getSelectedFile()+" geöffnet.");
                                                                  Vector <String> dateiinhalt = Streams.Dateilesen(waehlen.getSelectedFile());
                                                                 
                                                                 
                                                                  for  (int i=0; i < fensterobjekt.karte.length; i++){
                                                                          JListData data = fensterobjekt.makeDataModel(fensterobjekt.karte[i],waehlen.getSelectedFile());
                                                                          liste = fensterobjekt.jliste[i];
                                                                          //System.out.println(data.getSize());
                                                                          //System.out.println(fensterobjekt.karte[i]);
                                                                          System.out.println("vorher: "+liste.getModel().getElementAt(0));
                                                                          //fensterobjekt.jliste[i].setModel(data);
                                                                          liste.setModel(data);
                                                                          liste.repaint();
                                                                          //fensterobjekt.jliste[i].updateUI();
                                                                         
                                                                          System.out.println("nachher: "+liste.getModel().getElementAt(0));
                                                                         
                                                                         
                                                                          }
                                                                  //fensterobjekt.fensterupdaten();
                                                                  System.out.println("test::: "+fensterobjekt.jliste[0].getModel().getElementAt(0));
                                                                 
                                                                 
                                                                 
                                                          }
                                                         
                                          }
                                          catch (NullPointerException exp){
                                                  String nachricht = "Es wurde keine Datei ausgewählt!";
                                                  JOptionPane.showMessageDialog(fenster, nachricht, "Warnung",0);
                                                  System.out.println(exp.getMessage());
                                          }
                               
                        }
                       
                         
                               
        }       

//        ActionAdapter zum schreiben
        class ActionAdapterwrite implements ActionListener{
               
               
                public void actionPerformed( ActionEvent event){
                        /**
                        * Methode um die Datei zu speichern
                        *
                        */
                                        JFileChooser speichern = new JFileChooser();
                                        try {
                                        if (speichern.showSaveDialog(fenster) == JFileChooser.APPROVE_OPTION)
                                                  System.out.println ("Datei "+speichern.getSelectedFile()+" gespeichert.");
                                        //Streams.Dateischreiben(fenster.txtarea.getText(),speichern.getSelectedFile());
                                        }
                                        catch (NullPointerException exp){
                                                String nachricht = "Es wurde keine Datei ausgewählt!";
                                                  JOptionPane.showMessageDialog(fenster, nachricht, "Warnung",0);
                                                  System.out.println(exp.getMessage());
                                        }
                               
                       
                       
                }
               
       
        }// end of inner classes

}// class MenueLeiste
 
Die Klasse in der die GUI erstellt wird:





Code:
package gui;


import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.Vector;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import util.Streams;

public class SwingFenster extends JFrame{
       
        // Instanz- oder Membervariablen

        String[] karte = {
                           "A", "B","C",
                           "D","E","F",
                           "G","H","I",
                           "J", "K", "L",
                           "M","N","O",
                           "PQ","R","ST","UVW","XYZ"};
        JPanel listPanel = new JPanel();
       
        /**
        * JList
        */
        public JList[] jliste = new JList[karte.length];
       
        public JListData[] datamodellarray = new JListData[karte.length];
        JPanel panel = new JPanel();
        public JList liste;
        JListData dataModel;
        JTabbedPane tabbedPane = new JTabbedPane();
        int i;
        Container cpane = this.getContentPane();
        GridBagLayout grid = new GridBagLayout();
        GridBagConstraints constraints = new GridBagConstraints();

       
       
       
        public SwingFenster(){ // Konstruktor mit Parameter
                // Aufruf des Konstruktors der Oberklasse
                super("Swing Fenster");
                this.setJMenuBar(new Menu(this)); //legt die Bar auf das Panel
                cpane.setLayout(grid);
               
                makeTabbedPane(new File("prog2Mappe.txt"));
               
               
               
               
        }// end of constructor
       
       
        // eigene Methoden
       
           void makeTabbedPane(File datei)
           {
               
                   
                for  (i=0; i < karte.length; i++){

                        panel = makeTextPanel(karte[i],datei,i); //übergibt karte[i],also den Karteikartenreitername an makeTextPanel
                      tabbedPane.addTab(karte[i], null, panel, "Namen mit \"" + karte[i] + "\"");   
                           
                        }
               
                cpane.add(tabbedPane); // tabbedPane auf Panel legen
                this.pack(); // alles  packen
           }
         
         
          /**
           * Update look and feel
           * @param lafStyle (String) =
           * "javax.swing.plaf.metal.MetalLookAndFeel",
           * "com.sun.java.swing.plaf.motif.MotifLookAndFeel",
           * "com.sun.java.swing.plaf.windows.WindowsLookAndFeel",
           */
           void updateLAF(String lafStyle){
                   System.out.println("updateLAF = " + lafStyle);
           
                   try{
                           UIManager.setLookAndFeel( lafStyle );
                           SwingUtilities.updateComponentTreeUI( this );
                   }
                   catch(Exception ex){
                           System.out.println("Fehler beim L&F " + ex.getMessage());
                   }
                   this.pack(); // alles schön packen
           }
           
           public void fensterupdaten()
           {
                   SwingUtilities.updateComponentTreeUI(this);
                   System.out.println("fenster geupdated");
           }
           
           
           public JPanel makeTextPanel(String buchstabe, File datei,int i)
                {
               
                   
               
                        liste = makeJList(buchstabe,datei,i);
                        jliste[i] =liste; // Referenz von liste
                       
                       
                        JPanel panel = new JPanel(); // Instanzierung eines JPanel-Objektes panel
                panel.setLayout(new GridLayout(1, 1)); // Festlegung des Layouts des JPanel-Objektes
                       
                        JScrollPane scrollPane = new JScrollPane(jliste[i]); //Hüllklasse für Scrollbalken
                       
                        scrollPane.setPreferredSize(new Dimension(450, 260));
                        //Festlegung der Grösse des scrollPanels
                   
                        liste.addListSelectionListener(new ListSelectionAdapter(liste));
                        /* Anbinden des ListSelectionListener an die liste
                    */
                       
                    panel.add(scrollPane); // ScrollPane wird auf das panel gelegt
                return panel;
               
            }
           /**
            *  Methode, die die JList erstellt
            *
            *
            * @param buchstabe beinhaltet den Name des jeweiligen Karteikartereiters
            * @return
            */
           public JList makeJList(String buchstabe, File datei,int i)
           {
                   //Festlegung, wie die JListData aufgebaut werden soll(AbstractListModel)
                dataModel = makeDataModel(buchstabe,datei); // übergibt buchstabe an das JListmodel
                datamodellarray[i] = dataModel;
                /* Instanzierung eines JListData-Objektes*/       
                        JList liste = new JList(datamodellarray[i]);
                        jliste[i] =liste;
                        /* Instanzierung einer JList liste, die als Übergabeparameter
                        das JListData-Objekt beinhaltet.*/
                                       
                        liste.setLayoutOrientation(JList.VERTICAL); // Layout der liste festlegen
                        liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
                       
                        liste.setVisibleRowCount(-1); // liste wird sichtbar gemacht und ist nicht vorselektiert
                       
               
                        return liste;
           }
           
           public JListData makeDataModel(String buchstabe, File datei)
           {
                   JListData dataModel2 = new JListData(datei,buchstabe);
                   //System.out.println(dataModel2.getSize());
                   return dataModel2;
           }

           
           
           
            /**
             * Die Klasse ListSelectionAdapter dient dazu, die Werte aus dem Swing Fenster selectedName,
             * selectedIndex und selectedListe mit dem Selektierten zu aktualisieren.
             * 
             */
                class ListSelectionAdapter implements ListSelectionListener
                {
                        JList meineListe; // Deklaration eines JList-Objektes
                       
                        /**
                        * Der Konstruktor ListSelectionAdapter implementiert das JList-Objekt liste
                        * und übergibt als Parameter die liste.
                        * @param liste die selektierte Liste.
                        */
                        public ListSelectionAdapter(JList liste)
                        {
                                meineListe= liste; // JList liste wird auf meineListe abgelegt
                        }
                       
                        /**
                        * Die Methode valueChanged wird aufgerufen bei Auswahl der Werte
                        * @param ev ist das eingetretene  Ereignis.
                        */
                        public void valueChanged(ListSelectionEvent ev )
                        {
                                if(ev.getValueIsAdjusting() == false){
                                  String  selectedName = (String)meineListe.getSelectedValue();
                                  System.out.println("selektierter String " + selectedName);
                                 
                                  int selectedIndex = meineListe.getSelectedIndex();
                                  System.out.println("selektierter Index " + selectedIndex);
                       
                                }
                        }
                }// end of inner class ListSelectionAdapter

         
           
           /**
            * Methode, die den Inhalt der textarea ausliest, ihn nach zeilen trennt
            * und zurückgibt
            *
            */
           
       

        /*  public static String[] getkartelength()
           {
                   return karte;
           }
           */
               
               
         
           
                /** Hilfmethoden
                *
                *
                */
               
                void addComponent ( Container container, Component component,
                                int gridx, int gridy, int gridwidth, int gridheight)
                {
                        addComponent(container,component, gridx, gridy,gridwidth, gridheight,
                                        GridBagConstraints.WEST);
                       
                }
               
                void addComponent ( Container container, Component component,
                                int gridx, int gridy, int gridwidth, int gridheight,
                                int anchor)
                {
                                GridBagConstraints constr = new GridBagConstraints();
                               
                                constr.gridx = gridx;
                                constr.gridy = gridy;
                                constr.gridwidth = gridwidth;
                                constr.gridheight = gridheight;
                                constr.anchor = anchor;
                                 
                                container.add(component,constr);
                }
       
       
        // innere Klassen
       
       
       
       
       
       
       
       
       
       
}// end of class SwingFenster

Klasse die die DataList enthält:


Code:
package gui;

import java.io.File;
import java.util.Collections;
import java.util.Vector;

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import util.Streams;

import gui.SwingFenster;




public class JListData extends AbstractListModel {

        /**
        *
        */

        private static final long serialVersionUID = 1L;

        /**
        * Deklarieren eines Vector-Datenspeichers.
        */
        public Vector<String> dlist = new Vector<String>();

        /**
        * Referenz auf das Hauspfenster.
        */
        private JFrame fenster;

        File datei2;

        /**
        * Konstruktor
        *
        * @param Referenz
        *            auf das Hauspfenster.
        */

        public JListData(File datei, String buchstabe) {
                datei2 = datei;

                makeData(buchstabe);
               
        }

        /**
        * Die Methode makeData liest Daten ein und speichert sie im Datenspeicher
        *
        * @return Datenspeicher
        */

        public Vector<String> makeData(String buchstabe) // bekommt buchstabe vom
                                                                                                                // konstruktor
        {

                Vector<String> eintraege = Streams.Dateilesen(datei2);

                for (String eintrag : eintraege) { // Schleife, die nur die jeweiligen Strings liefert, spart code und schafft übersichtlichkeit
                        {
                                if (buchstabe.contains(eintrag.substring(0, 1).toUpperCase())) {
                                        dlist.add(eintrag);
                                }
                        }
                }

                return dlist; // Rückgabe des Datenspeichers

        }

        /**
        * Die Methode getElementAt holt das selektierte Element an der Stelle des
        * Indexes.
        *
        * @param index
        *            ist der Index, der anzeigt, welches Elememt geholt werden
        *            soll.
        * @return String am Index i
        */
        public Object getElementAt(int index) {
                return dlist.elementAt(index); // Rückgabe des Elements an der
                                                                                // entsprechenden Position
        }

        /**
        * Die Methode getSize gibt die Grösse des Datenspeichers zurück.
        *
        * @return int Grösse des Datenspeichers
        */
        public int getSize() {
                return dlist.size(); // Rückgabe der Grösse des Datenspeichers
        }

        /**
        * Diese Methode wird aufgerufen, um ein neues Element in der JList
        * darzustellen.
        *
        * @param s
        *            das ist der <strong>neue String </strong>, der dem
        *            Datenspeicher hinzugefügt werden soll
        *
        */
        public void addElement(String s) {
                // neues Element dem Datenspeicher hinzufügen
                dlist.addElement(s);
               
                Collections.sort(dlist);
                // nun das View (Jlist) aktualisieren - Fire-Event auslösen
                //this.fireIntervalAdded(this, dlist.size() - 1, dlist.size());
                this.fireIntervalAdded(this,0, getSize());
        }
       
        public void removeElement(String s) {
                // neues Element dem Datenspeicher hinzufügen
                dlist.remove(s);
                Collections.sort(dlist);
                // nun das View (Jlist) aktualisieren - Fire-Event auslösen
                this.fireIntervalRemoved(this, dlist.size() - 1, dlist.size());

        }
       
        public void changeElement(int index,String s)
        {
                dlist.set(index, s);
                Collections.sort(dlist);
                this.fireContentsChanged(this, dlist.size() - 1, dlist.size());
        }

}// end of class AbstractListModel


Klasse mit den Methoden zum einlesen und speichern


Code:
package util;

import java.io.*;
import java.util.*;

public class Streams {
       
       
       

       
        public static Vector <String> Dateilesen(File Datei) {
        //public static Vector Dateilesen() {
               
                /**
                * <b>Dateilesen(String Datei)</b><br>
                * Methode zum zeilenweisen Einlesen aus einer Datei und speichern in Vector
                * @param Datei (File) :
                *
                */
                Vector <String> lines=new Vector();
               
               
              try {
                 BufferedReader reader = new BufferedReader(new FileReader(Datei));
                 // muss noch geändert werden in geöffnete datei bzw zurückgeändert werden in Datei
                 
                 while (reader.ready()){
                        String line=reader.readLine();
                        lines.add(line);
                 }
                 
                 reader.close(); 
               }
              catch(FileNotFoundException exp) {
                 System.out.println("Fehler: "+ exp.getMessage());
              }
              catch(IOException exp) {
                 System.out.println("Fehler: "+ exp.getMessage());
              }
              return lines;
             
           }

       

        public static void Dateischreiben(String Datei, File closer) {
                /**
                * <b>Dateischreiben(String Datei)</b><br>
                * Methode zum zeilenweisen Schreiben in eine Datei
                * @param Datei (String) :
                *
                */
               
                try {
                        BufferedWriter bw = new BufferedWriter (new FileWriter (closer));
                        bw.write(Datei);
                        bw.close();
                }
                catch (FileNotFoundException exp) {
                        System.out.println("Fehler: "+ exp.getMessage());
                }
                catch (IOException exp) {
                        System.out.println("Fehler: "+ exp.getMessage());
                }
        }
}
 
Zuletzt bearbeitet:
Zumindest das Öffnen klappt jetzt, aber das löschen/ändern noch nicht.
der code:
Code:
//	Actionadapter für das Löschen von Namen
	class ActionAdapterlöschen implements ActionListener{
		
		public void actionPerformed(ActionEvent arg0) {
			
			 String[] karte =fenster.karte;
			// String name = "";
			 	
			 for (int j=0; j<karte.length;j++)
				{
				 
				 if (fenster.jliste[j].getSelectedIndex() != -1)
				 {
					 
				String name = (String) fenster.jliste[j].getSelectedValue(); // durchsucht die jliste an der Stelle k
																			//nach dem selektierten Wert
				if (name != null)							// wenn der Wert ungleich null ist, wird die OptionPane aufgebaut
				{
					
					
					int löschen = JOptionPane.showConfirmDialog(fenster, "Wirklich löschen?",name, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
					
//					if (löschen == 0)
					fenster.datamodellarray[j].removeElement(name);
					fenster.jliste[j].clearSelection();	
					
					
//					else
//					JOptionPane.showMessageDialog(fenster, "Name nicht gelöscht!");
//					
//					fenster.datamodellarray[j].addElement(aenderung);
					
					
				}
				//fenster.jliste[j].clearSelection();	
				}
				
				}
			
		}
	}
 
Zurück