Einige Fragen zu JList

Status
Nicht offen für weitere Antworten.

Ishildur

Bekanntes Mitglied
Hallo zusammen
Ich habe momentan folgende Situation mit einer JList:

- Wenn der Benutzer auf ein Element der Liste klickt, muss auf das "deselektierte" Element die Method "unload()" und auf dem nun neu selektierten Element "load()" aufgerufen werden.
- Wenn ein Element aus der Liste entfernt wird, muss auf diesem die Methode "delete()" aufgeruden werden.

Meine Fragen:

- Um die erste Anforderung zu erfüllen, habe ich das die Methode valueChanged des ListSelectionListeners implementiert. Allerdings finde ich einfach nicht heraus, wo ich das aktuell deselektierte sowie das aktuell selektierte Element bekomme.

- Wie kriege ich das mit der zweiten Anforderung hin, ich meine, es muss doch hoffentlich einen Listener geben, der einem darüber informiert, wenn ein Objekt hinzugefügt oder entfernt wird?

- Manchmal fülle ich eine Liste von Daten aus einer Datei. Da wäre es natürlich blöd, wenn diese Events ständig aufgerufen und die entsprechenden Resourcen geladen und gleich wieder entladen werden. Gibts da noch eine andere Möglichkeit, als temporär die Listener zu entfernen?

- Einige der Element innerhalb der Liste dürfen nicht angewählt werden. Also in C# gibs hierfür einen Event, der unmittelbar vor der Selektionierung aufgerufen wird und dessen Rückgabewert darüber entscheidet, ob das entsprechende Element wirklich ausgewählt wird oder nicht!

Lg Ishildur
 

maximus0815

Mitglied
Hallo Ishildur,

-neu selektierten Element kannst du in der Methode valueChanged() über list.getSelectedIndex() abfragen. Etwa so:
Code:
list.addListSelectionListener(new ListSelectionListener(){
           	
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
			
				list.getSelectedIndices();//liefer Indizes aller selektierten Elemente
				list.getSelectedIndex(); //Indes des aktuell NEU selektierten Elements
			
			}
        	
        });

-das Entfernen oder Hinzufügen neuer Elemete kann mit einem ListDataListener abgefragt werden. Dieser wird zum ListModel hinzugefügt:

Code:
  listModel.addListDataListener(new ListDataListener(){
			@Override
			public void contentsChanged(ListDataEvent arg0) {
				
			}

			@Override
			public void intervalAdded(ListDataEvent arg0) {
				
			}

			@Override
			public void intervalRemoved(ListDataEvent arg0) {
				
			}
        	
        });


Einige der Element innerhalb der Liste dürfen nicht angewählt werden. Also in C# gibs hierfür einen Event, der unmittelbar vor der Selektionierung aufgerufen wird und dessen Rückgabewert darüber entscheidet, ob das entsprechende Element wirklich ausgewählt wird oder nicht!

-Für dieses Problem würde ich einfach in ListSelectionListener.valueChanged() abfragen, ob das selektierte Element zu den Elemente zählt, die nicht angewählt werden dürfen, Wenn dies der Fall ist, mit list.setSelectedIndices() die Selektion entsprechend anpassen.

ich hoffe das hilft dir weiter.

grüsse max
 

Ishildur

Bekanntes Mitglied
Hi maximus
Erst mal ein grosses Dankeschön für deine Antwort! :D

Das Problem ist ja nun aber, dass ich auf demjenigen Element, welches selektiert war, bevor die jetzte Selektionierung erreicht wurde, eine Methode aufrufen. Wie finde ich also heraus, welche Element "zuvor" ausgewählt war?

Lg Ishildur
 

maximus0815

Mitglied
Weiß nicht ob das gespeichert wird. Aber du könntest z.B.: bei jedem Aufruf von valueChanged() die Liste der selektierten Indizes (list.getSelectedIndices()) in eine Instanzvariable des ListSelectionListeners speichern, Bei erneutem Aufruf einfach die alten Indizes mit den neuen vergleichen, dann weißt du was abselektiert wurde.
Geht vielleicht auch eleganter, aber ich denke so sollte es funktionieren.
 

Ishildur

Bekanntes Mitglied
Ja, das habe ich inzwischen so gemacht, allerdings gibt es dabei ein weitere Problem:
Wenn ich innerhalb der Liste mit den Pfeiltasten navigiere, dann wir der Event valueChanged wie erwartet einmal aufgerufen. Navigiere ich allerdings mit der Maus, dann werden ZWEI Events aufgerufen? :shock: Was soll denn dass?

Noch was: Es scheint so, also würde die Methode "intervalRemoved" des ListDataListener interfaces erst aufgerufen, nachdem das Element bereits aus der Liste entfernt wurde? :shock: Ich muss ja aber eben noch "delete" auf dem Objekt aufrufen, bevor es aus der List entfernt wird. Wie kann ich denn das machen? Gibt es einen Event, der VOR dem entfernen aus der Liste aufgerufen wird?

Lg Ishildur
 

maximus0815

Mitglied
User-Aktionen (z.B: Mouseclick) lösen teilweis mehrere Events aus. Um an das letzte Event einer Folge von Events zu kommen, benutze die Methode getValueIsAdjusting(). Diese liefert beim letzten Event false.
Code:
public void valueChanged(ListSelectionEvent e) {
    if (e.getValueIsAdjusting() == false) {
    }
}
 

Ishildur

Bekanntes Mitglied
Hmm wie ist das eigentlich! Gibts keine Klasse, welche die Interfaces ListModel UND ComboBoxModel implementiert?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
B Einige Fragen zum GUI AWT, Swing, JavaFX & SWT 3
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11
X in JTable nur einige Zellen editierbar machen AWT, Swing, JavaFX & SWT 2
R einige wörter fettgedruckt ausgeben AWT, Swing, JavaFX & SWT 2
G CellRenderer, der einige ImageIcons aneinanderreiht AWT, Swing, JavaFX & SWT 5
N frage ueber D&D von window wie in einige IDE AWT, Swing, JavaFX & SWT 7
C Einige Javafragen AWT, Swing, JavaFX & SWT 12
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 6
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 4
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Fragen zur GUI AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
Luk10 (LWJGL) Fragen zu VBOs AWT, Swing, JavaFX & SWT 21
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
B Prozentrechner GUI Fragen AWT, Swing, JavaFX & SWT 4
H Fragen zu JPanel und JButton AWT, Swing, JavaFX & SWT 3
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
U Swing Fragen bezüglich Multithreaded GUIs (Grundlagen): AWT, Swing, JavaFX & SWT 3
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
S 2D-Grafik Diverse Fragen zu Imagemanipulation in Java AWT, Swing, JavaFX & SWT 11
C Swing Grundsätzliche Fragen zu MVC AWT, Swing, JavaFX & SWT 8
F 3 Fragen zu Applets AWT, Swing, JavaFX & SWT 4
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
S Fragen zu GridBagLayout AWT, Swing, JavaFX & SWT 6
B Zeichnen in Swing - Jede Menge Fragen! AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
P Mehrere Fragen AWT, Swing, JavaFX & SWT 4
A Fragen zu Microber AWT, Swing, JavaFX & SWT 4
C Mehrer Fragen zu großem kompletten Swing Beispiel AWT, Swing, JavaFX & SWT 5
T Fragen zu JList und DnD AWT, Swing, JavaFX & SWT 13
I Drei Fragen/Probleme mit einer JTable AWT, Swing, JavaFX & SWT 9
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
J Fragen zu JTable und JScrollpane AWT, Swing, JavaFX & SWT 2
R Frage zu Listfeld oder jTable, auch andere Fragen AWT, Swing, JavaFX & SWT 5
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Fragen zu AWT AWT, Swing, JavaFX & SWT 3
S Fragen Databinding? AWT, Swing, JavaFX & SWT 3
J Fragen zu AWT Komponenten AWT, Swing, JavaFX & SWT 5
U 2 Fragen zu BufferedImages AWT, Swing, JavaFX & SWT 19
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
J Fragen zum SyntaxHighlighting (DefaultStyledDocument) AWT, Swing, JavaFX & SWT 2
I Ein paar SWT Fragen AWT, Swing, JavaFX & SWT 10
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
G 2 Fragen JDesktopPane AWT, Swing, JavaFX & SWT 4
S Fragen zu einem Beispiel(Swings und AWT) AWT, Swing, JavaFX & SWT 33
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
Y 2 Fragen- JList Inhalt ändern und Fenster invisible setzen AWT, Swing, JavaFX & SWT 5
C Gemischte Fragen AWT, Swing, JavaFX & SWT 10
G Fragen zu JList AWT, Swing, JavaFX & SWT 12
K 2 fragen:JCheckBoxMenuItem und ComboBox AWT, Swing, JavaFX & SWT 2
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
N 2 Fragen (zu binärem Suchen und Scrollbar) AWT, Swing, JavaFX & SWT 6
G JList, einzelne Strings hinzufügen AWT, Swing, JavaFX & SWT 9
B Jlist füllen AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben