Zum Inhalt springen

JList aktualisieren geht nicht


Empfohlene Beiträge

Geschrieben

Hi, ich habe ein 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. Wäre echt super wenn mir jemand helfen könnte. Ich denke das Problem liegt irgendwo in dieser Methode:


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 die GUI erstellt wird:






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



Geschrieben

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


Java:

/**


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!");




                }

        } 

Geschrieben

Fortsetzung der gleichen Klasse:



        //        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());

                                          }


                        }




        }     



        }// end of inner classes


}// class MenueLeiste


Geschrieben

Klasse die die DataList enthält:


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;


Java:



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

Java:




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());

                }

        }

}

Geschrieben

zunächst ein Tip:

ich glaube niemand hier wird sich deinen Code komplett ansehen, debuggen und dir dann sagen wo der fehler liegt.

Schon allein aus der Menge heraus.

Da hättest du auch alles zum Download anbieten können und es wäre wahrscheinlicher gewesen das sich das jemand ansieht.

Zu deinem Problem:

ich vermute irgendwas wird nicht aktualisiert, das ist nicht zwangsweise das JTree, sondern kann ein darüberliegendes Panel, Frame, Scrollpane, was auch immer sein. Setze mal testweise eine Randfarbe, hintergrundfarbe oder sonstwas einfaches vom JTree und gug nach ob er das übernimmt.

Geschrieben

Stimmt, war evtl bissel unüberlegt. Das öffnen/speichern geht inzwischen, nurnoch das ändern/löschen macht mir Probleme. Ich kann zwar löschen und ändern, wenn ich allerdings das letzte Item einer JList lösche, geht es nichtmehr. Evtl kann mir ja jemand dabei helfen?

Hier der Quellcode:


	//	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();	

					break;


//					else

//					JOptionPane.showMessageDialog(fenster, "Name nicht gelöscht!");

//					

//					fenster.datamodellarray[j].addElement(aenderung);



				}

				//fenster.jliste[j].clearSelection();	

				}


				}


		}

	}

Geschrieben

Hab zwar von der Thematik kaum Ahnung aber so wie ich das verstehe,

löscht du erst das Element und hebst danach die Auswahl auf.

Wenn es allerdings das letzte Element war, ist ja nix mehr da zum Auswahl aufheben.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...