carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
5.865 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 38 von 2963 (1%) |<   <   >   >|

Autor Tonic
Datum 08.06.07, 18:54
Betreff JList aktualisieren geht nicht


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:

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



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


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


 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com