JList aktualisieren

Status
Nicht offen für weitere Antworten.

tdc

Bekanntes Mitglied
Hallo!
Ich habe ein Programm in dem sich eine JList befindet. Innerhalb des Programms kommen neue JList-Elemente dazu, aber sie wird nicht aktualisiert. Ich habe schon viele unterschiedliche Sachen probiert aber es funktioniert nicht. :bahnhof:
Wie kann ich die JList dazu bringen sich zu aktualisieren?
 

Landei

Top Contributor
Was für ein ListModel verwendest du? Und zeig doch bitte mal ein Code-Schnipsel.
 
Zuletzt bearbeitet:

tdc

Bekanntes Mitglied
Zurzeit sieht der Code der JList so aus:
Java:
		File SubjDirs = new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj");
		LP = new JPanel();
		String[] SubjDirsList = SubjDirs.list();
		SubjList = new JList(SubjDirsList);
		SubjList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
		SubjList.setLayoutOrientation(JList.VERTICAL);
		LP.add(SubjList);
Die Liste listet alle Ordner in dem Ordner subj auf. Wenn das Programm jetzt allerdings einen Ordner hinzufügt, muss ich erst das Programm neustarten, bis der Ordner aufgelistet wird. Deshalb möchte ich, dass die JList aktualisiert wird.
 

Landei

Top Contributor
Ungetestet:

Java:
class DeineKlasse {
 
    private DefaultListModel model;

    void deineMethode() {
        ... 
        String[] SubjDirsList = SubjDirs.list();
        model = new DefaultListModel();
        for(int i = 0; i <  SubjDirsList.length; i++) {
           model.add(i, SubjDirsList[i]);
        }
        SubjList = new JList(model);
        SubjList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
        SubjList.setLayoutOrientation(JList.VERTICAL);
        LP.add(new JScrollPane(SubjList));    
    }

   void sonstwo() {
      ... 
      model.add(model.size(), "bla");
      ...
      model.remove(0);
   }
  
}
 
Zuletzt bearbeitet:

tdc

Bekanntes Mitglied
Danke für den Code, aber es geht leider immer noch nicht. :noe:

Stattdessen wird jetzt diese Fehlermeldung angezeigt:
Java:
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
So sieht mein Code jetzt aus:
Java:
public void createSubjList()
	{
		File SubjDirs = new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj");
		LP = new JPanel();
	    String[] SubjDirsList = SubjDirs.list();
        model = new DefaultListModel();
        for(int i = 0; i <  SubjDirsList.length; i++) {
           model.add(i, SubjDirsList[i]);
        }
        SubjList = new JList(model);
		SubjList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
		SubjList.setLayoutOrientation(JList.VERTICAL);
		LP.add(new JScrollPane(SubjList));
	}
und
Java:
(new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj\\" + NameField.getText())).mkdir();
				SubjChooseDialog SuCD = new SubjChooseDialog();
				SuCD.model.add(SuCD.model.size(),NameField.getText());
				NameDialog.dispose();
Ich weiß nicht wo jetzt der Fehler liegt...:bahnhof:
 

Landei

Top Contributor
Was ist es für ein Fehlertyp? Und schau mal in der Fehlermeldung, wo das erste mal eine Stelle in deinem Code genannt wird (ich bin mir ziemlich sicher, dass EventDispatchThread keinen Bug hat).
 

tdc

Bekanntes Mitglied
1. Ich habe den Code ein wenig verändert, er sieht jetzt so aus:
Java:
				SubjChooseDialog SuCD = new SubjChooseDialog();
				File f = new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj\\" + NameField.getText());
				f.mkdir();
				SuCD.model.add(SuCD.model.size(),f);
				NameDialog.dispose();
2. Ich habe gemerk dass die Fehlermeldung vieeeel länger ist. (ich habe ausversehen nur die untersten 3 Zeilen kopiert, weil ich nicht gesehen habe, dass es noch einen Scrollbalken gibt)
Sie sieht so aus:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at main.SubjNameDialog.actionPerformed(SubjNameDialog.java:61)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
	at java.awt.Component.processMouseEvent(Component.java:5488)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
	at java.awt.Component.processEvent(Component.java:5253)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1766)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Könnt ihr mir sagen wo der Fehler liegt? Die erste Zeile der Fehlermeldung hat einen Verweis auf die Zeile:
Java:
SuCD.model.add(SuCD.model.size(),f);
P.S.: Bitte antwortet möglichst schnell! :(
 

Landei

Top Contributor
Hmmm, hast du das Model überhaupt initialisiert? In deiner Klasse sollte irgendwo
Java:
DefaultListModel model = new DefaultListModel();
stehen.
 

tdc

Bekanntes Mitglied
Ja... warte hier mal die beiden Klassen:
Java:
package main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.io.*;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.ListSelectionModel;
import javax.swing.JScrollPane;

public class SubjChooseDialog
	implements ActionListener
{
	private JDialog ChooseDialog;
	private JPanel MP; //Main-Panel
	private JPanel TP; //Text-Panel
	private JPanel LP; //List-Panel
	private JPanel BP; //Button-Panel
	private JList SubjList;
	public DefaultListModel model;
	private JButton NeuesFachErstellen;
	private JButton OK;
	private JButton Abbrechen;
	
	public void createChooseDialog()
	{
		ChooseDialog = new JDialog();
		MP = new JPanel(new FlowLayout());
		ChooseDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		ChooseDialog.setTitle("Wähle ein Fach:");
		ChooseDialog.setSize(300,400);
		ChooseDialog.setResizable(false);
		ChooseDialog.setLocation(200,200);
		createText();
		createSubjList();
		createButtons();
		MP.add(TP);
		MP.add(LP);
		MP.add(BP);
		ChooseDialog.add(MP);
		ChooseDialog.pack();
		ChooseDialog.setVisible(true);
	}
	
	public void createText()
	{
		JLabel Text1 = new JLabel("  Wähle ein Fach aus. Falls die Liste leer ist,");
		JLabel Text2 = new JLabel("  klicke unten auf den Button \"Fach erstellen\"");
		TP = new JPanel();
		TP.setLayout(new GridLayout(2,1));
		TP.add(Text1);
		TP.add(Text2);
	}
	
	public void createSubjList()
	{
		File SubjDirs = new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj");
		LP = new JPanel();
	    String[] SubjDirsList = SubjDirs.list();
        model = new DefaultListModel();
        for(int i = 0; i <  SubjDirsList.length; i++) {
           model.add(i, SubjDirsList[i]);
        }
        SubjList = new JList(model);
		SubjList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
		SubjList.setLayoutOrientation(JList.VERTICAL);
		LP.add(new JScrollPane(SubjList));
	}
	
	public void createButtons()
	{
		BP = new JPanel();
		NeuesFachErstellen = new JButton("Neues Fach erstellen");
		OK = new JButton("OK");
		Abbrechen = new JButton("Abbrechen");
		NeuesFachErstellen.addActionListener(this);
		OK.addActionListener(this);
		Abbrechen.addActionListener(this);
		BP.add(NeuesFachErstellen);
		BP.add(OK);
		BP.add(Abbrechen);
	}
	
	public void actionPerformed(ActionEvent Ereignis2)
	{
		Object Quelle = Ereignis2.getSource();
		
		if(Quelle == NeuesFachErstellen)
		{
			SubjNameDialog myNameDialog = new SubjNameDialog();
			myNameDialog.createNameDialog();
		}
		
		if(Quelle == OK)
		{
			System.out.println("OK");
		}
		
		if(Quelle == Abbrechen)
		{
			ChooseDialog.dispose();
		}
	}
}
und
Java:
package main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.GridLayout;
import java.io.File;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class SubjNameDialog
	implements ActionListener
{
	private JDialog NameDialog;
	private JPanel MP2; //Main-Panel 2 (MP does already exists in other class)
	private JPanel BP2;	//Button-Panel 2 (s.o.)
	public JTextField NameField;
	private JButton OK2; //(s.o.)
	
	public void createNameDialog()
	{
		NameDialog = new JDialog();
		MP2 = new JPanel(new GridLayout(2,1,0,2));
		NameDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		NameDialog.setTitle("Benenne das Fach:");
		NameDialog.setSize(250,100);
		NameDialog.setResizable(false);
		NameDialog.setLocation(250,225);
		createNameField();
		createButton();
		MP2.add(NameField);
		MP2.add(BP2);
		NameDialog.add(MP2);
		NameDialog.setVisible(true);
	}
	
	public void createNameField()
	{
		NameField = new JTextField();
	}
	
	public void createButton()
	{
		OK2 = new JButton("OK");
		OK2.addActionListener(this);
		BP2 = new JPanel();
		BP2.add(OK2);
	}
	
	public void actionPerformed(ActionEvent Ereignis3)
	{
		Object Quelle = Ereignis3.getSource();
		
		if(Quelle == OK2)
		{
			if(NameField.getText().length() > 0)
			{
				SubjChooseDialog SuCD = new SubjChooseDialog();
				File f = new File("C:\\Programme\\Eclipse\\Fehlerkartei\\src\\subj\\" + NameField.getText());
				f.mkdir();
				SuCD.model.add(SuCD.model.size(),f);
				NameDialog.dispose();
			}
			else
			{
				NameDialog.dispose();
			}
		}
	}
}
Model wird in der ersten Klasse in Zeile 65 initialisiert.
 

tdc

Bekanntes Mitglied
Ja, danke jetzt geht es!
... allerdings klappt das mit dem aktualisieren immer noch nicht (2.Klasse ab Zeile 58)
 

Landei

Top Contributor
Hmmm, seltsam. Bei mir wird bei add() aktualisiert. Hast du wirklich Zeile 65 rausgeschmissen?
Und was passiert, wenn du "oben" einfügst, also SuCD.model.add(0,f);
 

tdc

Bekanntes Mitglied
Ja, die Zeile 65 ist draußen:

Java:
	    String[] SubjDirsList = SubjDirs.list();;
        for(int i = 0; i <  SubjDirsList.length; i++) {
Wenn ich
Java:
SuCD.model.add(0,f);
einfüge, funktioniert es auch nicht...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
E JList GUI aktualisieren? Java Basics - Anfänger-Themen 3
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
L JList Aktualisieren funktioniert nur Zufällig Java Basics - Anfänger-Themen 3
G JList - aktualisieren Java Basics - Anfänger-Themen 6
M JList Datenstring erweitern und JList aktualisieren Java Basics - Anfänger-Themen 5
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
D JList ListSelectionEvent entfernen? Java Basics - Anfänger-Themen 13
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
S Export aus JList Java Basics - Anfänger-Themen 6
M Erste Schritte JList einträge Java Basics - Anfänger-Themen 1
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
I in listFiles() oder JList Dateiendungen entfernen Java Basics - Anfänger-Themen 14
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
B JFileChooser und JList Java Basics - Anfänger-Themen 7
OnDemand Enumeration <> JList Java Basics - Anfänger-Themen 5
P Mehrfachauswahl in einer JList Java Basics - Anfänger-Themen 2
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
C .txt und Jlist Java Basics - Anfänger-Themen 10
J Daten in eine JList einfügen Java Basics - Anfänger-Themen 6
A JList / toString modify Java Basics - Anfänger-Themen 2
K jlist an text anpassen Java Basics - Anfänger-Themen 3
D Erste Schritte JList + Checkbox Java Basics - Anfänger-Themen 5
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
A JList bearbeiten Java Basics - Anfänger-Themen 2
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
M Inhalt/Wert aus einer JList ablesen Java Basics - Anfänger-Themen 5
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
S ListModel - Anzeige im JList Java Basics - Anfänger-Themen 4
H JList Java Basics - Anfänger-Themen 2
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
U JList Java Basics - Anfänger-Themen 6
L HashMap zu JList Java Basics - Anfänger-Themen 6
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
M Jlist Elemente hinzufügen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
JAVAnnik JList Auswahl Java Basics - Anfänger-Themen 2
Z In JList per Doppelklick eine Datei öffnen (z.B. ein PDF) Java Basics - Anfänger-Themen 16
P Jlist + Popupmenu Java Basics - Anfänger-Themen 10
M Properties Eintrag löschen, welcher in der JList "ausgewählt" wurde Java Basics - Anfänger-Themen 2
c_sidi90 File Array an Jlist übergeben Java Basics - Anfänger-Themen 11
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
N DefaultListModel auf JList sortieren Java Basics - Anfänger-Themen 7
A JList mit Überschrift Java Basics - Anfänger-Themen 2
K Scrollbalken in JList funktioniert nicht Java Basics - Anfänger-Themen 9
B JList wird nicht aktualisiert bzw hat keine Items Java Basics - Anfänger-Themen 2
D JList nicht sichtbar Java Basics - Anfänger-Themen 4
B JList mit Scrollbar? Java Basics - Anfänger-Themen 7
K Datenbindung an JTable, JList, Primärschlüssel verstecken Java Basics - Anfänger-Themen 4
M JList Event Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
M ArrayList<int[]> - Problem mit JList! Java Basics - Anfänger-Themen 27
M JList + ListModel Java Basics - Anfänger-Themen 26
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
R .Jpg anzeigen lassen nach klick in JList Java Basics - Anfänger-Themen 11
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
A Eintrag einer JLIST speichern Java Basics - Anfänger-Themen 3
A Anordnung von JList Elementen Java Basics - Anfänger-Themen 3
B JList wird nach Ändern weiß Java Basics - Anfänger-Themen 11
B Einträge im JList einfügen Java Basics - Anfänger-Themen 9
S JList mit icons UND strings für Dialogbox Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
DStrohma Index einer markierten Zeile aus einer JList bekommen? Java Basics - Anfänger-Themen 5
P JList in JPanel anzeigen Java Basics - Anfänger-Themen 2
hdi Synchronisation zwischen JList und ListModel Java Basics - Anfänger-Themen 6
D Suche in JList nach dem ersten Buchstaben Java Basics - Anfänger-Themen 2
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
G Elemente aus jList entferne. Java Basics - Anfänger-Themen 2
G JList updaten Java Basics - Anfänger-Themen 7
K jList scrollPane Java Basics - Anfänger-Themen 2
7 Java Swing: Wie JScrollPane zur JList hinzufügen? Java Basics - Anfänger-Themen 12
K JList verschiebt sich Java Basics - Anfänger-Themen 7
G String in JList Java Basics - Anfänger-Themen 11
T Jlist Object hinzufügen Java Basics - Anfänger-Themen 2
B Auslesen der JList Java Basics - Anfänger-Themen 11
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
M Dateien in einem Ordner, JList Java Basics - Anfänger-Themen 7
G JList größe verändert sich Java Basics - Anfänger-Themen 2
M JList Parameter verschieben Java Basics - Anfänger-Themen 3
C jList - Zeile Markieren - jList.setSelectedIndex(wert); Java Basics - Anfänger-Themen 3
G JList mit LinkedList füllen Java Basics - Anfänger-Themen 2
G JList Mehrfachselektion Java Basics - Anfänger-Themen 6
N 2 spaltige JList, mit dynamischen Inhalt Java Basics - Anfänger-Themen 4
P JList mit setListData(<Vector>) Java Basics - Anfänger-Themen 7
J GUI mit JList Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben