Eintrag per "doppel-Klick" aus einer JList löschen

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich versuche gerade aus einer JList beliebige Werte (Zeilen) zu löschen.
Bisher verwende ich die Methode mouseClicked(), jedoch noch mit wenig Erfolg!
Irgendwie tut sich nichts wenn ich z.B. JList.jListFC.clearSelection(); etc. verwende!
Verwende ich vielleicht den falschen Listender bzw. die falsche Methode?

Noch eine Frage: gibt es auch einen Listener der auf doppel Click reagiert?
 
Hallo,

was funktioniert denn mit dem MouseListener denn nicht?
Du kannst beim MouseListener den clickCount abfragen und wenn der 2 ist entfernst du das Element.

MFG

zEriX
 
hab mir jetzt mal was über System.out.println in der Konsole ausgegeben lassen ob mein Listener funktioniert.
Das klappt soweit.
Allerdings bin ich noch nicht dahinter gekommen wie ich einen x-beliebigen Eintrag aus der JList löschen kann.
Mit jListFC.clearSelection() klappt es ja anscheinend nicht auch mit jListFC.remove();
funktioniert es nicht....
 
Moin!
clearSelection() hebt die Selektion auf, und remove() ist dafür gedacht, andere Swing Komponenten aus der List zu entfernen.
Ein Element aus der Liste entfernen kannst du folgendermaßen machen:
Code:
((DefaultListModel)(jListFC.getModel())).remove(int index);

*grüssle*
MeinerEiner
 
Hallo Ich habe wieder ein wenig rumgebastelt. Vom Prinzip her denke ich das ich deine Codezeile verstanden haben. Nur leider happert es mit der Umsetzung
Habe jetzt mal folgendes ausprobiert:

Code:
public void mouseClicked(java.awt.event.MouseEvent e) {
      DefaultListModel listModel = new DefaultListModel(); 
     JList list = new JList(listModel);
    int index = list.getSelectedIndex();
    listModel.remove(index);
  }
});

Nur leider bekomme ich nun folgende Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1

ich denke mal das ist ein typisch klassischer Anfängerfehler.........
 
Moin!
In deinem Beispiel hast du bislang immer mit einer Liste names "jListFC" gearbeitet. Ich nehme mal an, das darin auch deine Daten stehen, oder? Mit dieser musst du dann auch arbeiten, wenn es um die Bearbeitung des Mausklicks geht..
Was du nämlich machst, ist bei einem Mausklick eine neue leere Liste zu erstellen, und aus versuchst du dann, ein Element zu entfernen..


*grüssle*
MeinerEiner
 
Hallo,
habe den Code jetzt mal angepasst, aber es funktioniert immer noch nicht.


Code:
final DefaultListModel listModel = new DefaultListModel(); 
jListFC = new JList(listModel);
jListFC.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
	int index = jListFC.getSelectedIndex();
					 
    System.out.println("index" + index);
    jListFC.remove(index);
    jListFC.repaint();
				    
					
}
});

Ich bekomme jetzt folgende Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
at java.awt.Container.remove(Unknown Source)
at Info$1.mouseClicked(Info.java:586)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
 
Schämen tue ich ich schon lange und Haare habe ich langsam auch keine mehr auf dem Kopf.......

ich bekomme es einfach nicht hin:

Code:
private JList getJListFC() {
if (jListFC == null) {
	DefaultListModel listModel = new DefaultListModel(); 
	jListFC = new JList(listModel);
jListFC.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
					

((DefaultListModel)(jListFC.getModel())).remove(int index);
					
}
});


Wenn ich deinen Code so einbaue motzt er immer am int


Kann es sein das es nicht funktioniert, da ich meine Liste bis jetzt mit einem Vektor gefüllt habe?

Ich habe das jetzt umgestellt: Die Liste soll in der Methode buttonfill() gefüllt werden, und zwar immer wenn ein Button gedrückt wird. Das sieht dann ungefähr so aus:

Code:
public void actionPerformed(java.awt.event.ActionEvent e)
{
   if(e.getActionCommand().equals(e.getActionCommand()));
   {	
       try
          {	    								DefaultListModel lmodel = new DefaultListModel();
	  ftext = (e.getActionCommand());

	 // Vector vec = new Vector();  alte Methode um die JList zu befüllen
	
                if  (ftext != null)
	{
 	lmodel.addElement ( ftext );
                vec.addElement(ftext);   //mit Vektor	}	
			 
	}
	jListFC = new JList(lmodel);
               jListFC.setListData(vec);   //mit Vektor
     catch...
    etc. 
});


Habe versucht das ganze mal auf das ListModel umzustellen.....
.... so und jetzt befüllt er mir nicht mal der die Liste mit den Daten. Wenn ich mir das lmodel in der Konsole ausgeben lassen sind die Daten aber da!
 
Zurück