Index einer markierten Zeile aus einer JList bekommen?

Status
Nicht offen für weitere Antworten.

DStrohma

Bekanntes Mitglied
hi!

ich hab da ein kleines problem:
ich bräuchte den index (als INT) einer selektierten zeile aus einem DefaultListModel, das wiederrum in einer JList steckt.

ich brauche den index aus dieser liste um danach ein element aus einer ArrayList an der gleichen index-position zu löschen.

ist es überhaupt möglich aus einem DefaultListModel ne index-position zu bekommen???

grüße,
dave
 

hdi

Top Contributor
es gibt ja

Code:
int index = meineListe.getSelectedIndex();

oder so.

und wenn du dein DefaultListModel ordentlich implementiert hast, kannste dann einfach

Code:
meineListe.getModel().getValueAt(index);

aufrufen, und hast dein Objekt an dieser Stelle
 

DStrohma

Bekanntes Mitglied
das problem ist, wenn ich
Code:
int s = list.getSelectedIndex();
aufrufe (list ist meine JList), dann ist "s" IMMER (egal was ich selektiert hab) "-1"

-1 heißt wohl dass keine selektion vorhanden war...

aus der JListe kann ich aber mit
Code:
items.remove(list.getSelectedIndex());
(items ist mein DefaultListModel) ohne probleme einträge entfernen. nur das problem ist, ich will nix aus der JList entfernen, ich will nur den index als int haben und das klappt nicht :autsch:
 

HoaX

Top Contributor
wenn es -1 liefert dann ist der aktuell gesetzte wert den getSelectedItem() zurückgibt wohl nicht in der liste enthalten. was für objekte hast du denn in der liste? eigene? dann solltest du equals und hashcode überschreiben!
 

DStrohma

Bekanntes Mitglied
ich schieb hier mal einfach meinen code rein. nur dass mal nachvollziehbar wird was ich meine. ich hab einfach mal versucht die funktionalität irgendwie zu implementieren. mir ist aber klar dass es nicht umbedingt hübsch ist :)

wichtig sind hier wirklich nur die letzten paar zeilen im code

versucht mal bitte das auszuführen und etwas aus der liste zu löschen... das geht zwar aber der index (den ich mir auf die konsole liefern lass) sagt eben immer nur -1

PS: wenn ihr beim ausführen einen fehler bekommt, achtet nicht drauf, is wegen der serialisierung.
Code:
package View;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import Model.MediaObject;

@SuppressWarnings("serial")
public class BibView extends JFrame
{
	DefaultListModel items;
	ArrayList<MediaObject> l = new ArrayList<MediaObject>();
	JList list;
	JScrollPane scrollPane;

	JButton addMedia;
	JButton removeMedia;
	JButton mediaVideo;
	JButton mediaAudio;
	JButton mediaBoth;
	JButton ok;

	JLabel mediaCaption;
	JLabel empty1;
	JLabel empty2;
	JLabel empty3;
	JLabel empty4;
	JLabel empty5;
	
	OutputStream fos;
	InputStream fis;
	
	int id = 0;

	JFileChooser c = new JFileChooser(new File(""));

	public void serializeBib(ArrayList l) throws Exception
	{
		fos = new FileOutputStream("Bib.ser");
		ObjectOutputStream o = new ObjectOutputStream(fos);
		o.writeObject(l);
	}
	
	public void deserializeBib() throws Exception
	{
		fis = new FileInputStream("Bib.ser");
		ObjectInputStream o = new ObjectInputStream(fis);
		l = (ArrayList<MediaObject>) o.readObject();
	}
	
	// TODO: Nur Test um GUI zu testen, löschen!
	public static void main(String[] args)
	{
		BibView bib = new BibView();
	}

	public BibView()
	{
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setTitle("Bibliothek - Medien verwalten");
		this.setSize(500, 396);
		this.setLocationRelativeTo(null);
		this.setLayout(new GridLayout(1, 2));

		// TODO: Scrolen geht nicht!
		JPanel listPanel = new JPanel();
		listPanel.setLayout(new BorderLayout());
		JPanel buttonPanel = new JPanel();
		JPanel caption = new JPanel();
		caption.setLayout(new FlowLayout());

		addMedia = new JButton("Hinzufügen...");
		removeMedia = new JButton("Löschen...");
		mediaCaption = new JLabel("Medien erstellen");

		mediaVideo = new JButton("Video erstellen");
		mediaAudio = new JButton("Audio erstellen");
		mediaBoth = new JButton("Video mit Audio erstellen");

		empty1 = new JLabel();
		empty2 = new JLabel();
		empty3 = new JLabel();
		empty4 = new JLabel();
		empty5 = new JLabel();

		ok = new JButton("OK");

		caption.add(mediaCaption);

		ok.addActionListener(al);
		removeMedia.addActionListener(al);
		addMedia.addActionListener(al);
		
		items = new DefaultListModel();

		try
		{
			deserializeBib();
		} catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		for (int i = 0; i < l.size(); i++)
		{
			items.add(0, l.get(i).getName());
		}

		list = new JList(items);
		list.addMouseListener(ms);
		
		scrollPane = new JScrollPane(list);

		listPanel.add(scrollPane);

		buttonPanel.setLayout(new GridLayout(12, 1));
		buttonPanel.add(addMedia);
		buttonPanel.add(removeMedia);
		buttonPanel.add(empty1);
		buttonPanel.add(caption);
		buttonPanel.add(mediaVideo);
		buttonPanel.add(mediaAudio);
		buttonPanel.add(mediaBoth);
		buttonPanel.add(empty2);
		buttonPanel.add(empty3);
		buttonPanel.add(empty4);
		buttonPanel.add(empty5);
		buttonPanel.add(ok);

		this.add(listPanel);
		this.add(buttonPanel);

		this.setVisible(true);
	}

	MouseListener ms = new MouseListener()
	{
		@Override
		public void mouseClicked(MouseEvent e)
		{
			int click = e.getClickCount();
			
			if (click == 2)
			{
				// TODO: MedienObjekt abspielen impl.
//				new AudioPlayer();
				System.out.println("Doppelklick");
			}
		}

		@Override
		public void mouseEntered(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseReleased(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}
	};
	
	public int getID()
	{
		// TODO: Wie krieg ich das hin dass mir IMMER eine eindeutige ID generiert wird?
		return id += 1;
	}
	
	ActionListener al = new ActionListener()
	{
		public void actionPerformed(ActionEvent evt)
		{
			AbstractButton ab = (AbstractButton) evt.getSource();

			if (ab.getActionCommand() == "OK")
			{
				try
				{
					serializeBib(l);
				} catch (Exception e)
				{
					// TODO: Fehlermeldung ausgeben
					e.printStackTrace();
				}
				
				dispose();
			}

			if (ab.getActionCommand() == "Hinzufügen...")
			{
				c.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
				c.addChoosableFileFilter(new FileNameExtensionFilter(
						"Media files (*.avi; *.mpg; *.mpeg; *.mov; *.wav)", "avi",
						"mpg", "mpeg", "mov", "wav"));

				int open = c.showOpenDialog(null);

				if (open == JFileChooser.APPROVE_OPTION)
				{
					MediaObject tmp = new MediaObject(getID(), c.getSelectedFile().getName(), c.getSelectedFile());
					l.add(tmp);
					items.add(0, c.getSelectedFile().getName());
				}
				if (open == JFileChooser.CANCEL_OPTION)
				{
				}
			}

			if (ab.getActionCommand() == "Löschen...")
			{
				int delete = JOptionPane
						.showConfirmDialog(rootPane, "Wirklich löschen?",
								"Datei aus Bibliothek löschen", JOptionPane.YES_NO_OPTION,
								JOptionPane.QUESTION_MESSAGE);
				if (delete == 0)
				{
					try
					{
						items.remove(list.getSelectedIndex());
					}

					catch (ArrayIndexOutOfBoundsException e)
					{
						JOptionPane.showMessageDialog(rootPane,
								"Keine Datei ausgewählt",
								"Löschen nicht möglich",
								JOptionPane.WARNING_MESSAGE);
					}
					int sel = list.getSelectedIndex();
					System.out.println("getSelectedIndex " + sel);
//					l.remove(list.);
				}
			}
		}
	};
}
 
S

SlaterB

Gast
hier eine ausführbare Version:
man muss erst mit Hinzufügen paar Elemente hinzufügen,
bei mir kommt dann beim MausListener eh immer eine Selektion,
beim Löschen-Button auch, falls was selektiert ist

Code:
public class Test
{
    public static void main(String[] args)
    {
        new BibView();
    }
}

class MediaObject
{
    String name;

    public MediaObject(String name)
    {
        this.name = name;
    }


    public Object getName()
    {
        return name;
    }

}


class BibView
    extends JFrame
{
    DefaultListModel items;
    ArrayList<MediaObject> l = new ArrayList<MediaObject>();
    JList list;
    JScrollPane scrollPane;

    JButton addMedia;
    JButton removeMedia;
    JButton ok;

    ActionListener al = new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                AbstractButton ab = (AbstractButton)evt.getSource();

                if (ab.getActionCommand() == "OK")
                {
                    dispose();
                }

                if (ab.getActionCommand() == "Hinzufügen...")
                {
                    MediaObject tmp = new MediaObject("File" + System.currentTimeMillis());
                    l.add(tmp);
                    items.add(0, tmp.getName());
                }

                if (ab.getActionCommand() == "Löschen...")
                {
                    int sel = list.getSelectedIndex();
                    System.out.println("getSelectedIndex " + sel);
                }
            }
        };

    MouseListener ms = new MouseAdapter()
        {
            public void mouseClicked(MouseEvent e)
            {
                System.out.println("Maus: " + list.getSelectedIndex());

            }
        };


    public BibView()
    {
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setTitle("Bibliothek - Medien verwalten");
        this.setSize(500, 396);
        this.setLocationRelativeTo(null);
        this.setLayout(new GridLayout(1, 2));

        // TODO: Scrolen geht nicht!
        JPanel listPanel = new JPanel();
        listPanel.setLayout(new BorderLayout());
        JPanel buttonPanel = new JPanel();
        JPanel caption = new JPanel();
        caption.setLayout(new FlowLayout());

        addMedia = new JButton("Hinzufügen...");
        removeMedia = new JButton("Löschen...");

        ok = new JButton("OK");
        ok.addActionListener(al);
        removeMedia.addActionListener(al);
        addMedia.addActionListener(al);

        items = new DefaultListModel();

        for (int i = 0; i < l.size(); i++)
        {
            items.add(0, l.get(i).getName());
        }

        list = new JList(items);
        list.addMouseListener(ms);

        scrollPane = new JScrollPane(list);

        listPanel.add(scrollPane);

        buttonPanel.setLayout(new GridLayout(12, 1));
        buttonPanel.add(addMedia);
        buttonPanel.add(removeMedia);
        buttonPanel.add(ok);

        this.add(listPanel);
        this.add(buttonPanel);

        this.setVisible(true);
    }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wie kann ich den Index i von einer LinkedList überprüfen? Java Basics - Anfänger-Themen 36
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
I Letzter Index einer Liste Java Basics - Anfänger-Themen 8
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
_so_far_away_ Fehlermeldung "Index 2 out of bounds for length 2" Java Basics - Anfänger-Themen 7
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
M Ersten Index von Array bestimmen Java Basics - Anfänger-Themen 14
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
Baktash Index 0 out of bounds for length 0 Java Basics - Anfänger-Themen 5
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
JD_1998 Vektorrechner; User Input -> Index out of bounds Java Basics - Anfänger-Themen 3
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
S String index out of range Java Basics - Anfänger-Themen 11
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M Index of Array erweiteren Java Basics - Anfänger-Themen 24
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
L gerader Index im Array Java Basics - Anfänger-Themen 8
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
P String index out of range Java Basics - Anfänger-Themen 12
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
M Index out of range Java Basics - Anfänger-Themen 10
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
D " Column Index out of range, 6 > 5." Java Basics - Anfänger-Themen 8
S Index File bauen Java Basics - Anfänger-Themen 5
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
Hacer remove at index Java Basics - Anfänger-Themen 31
M Kleinsten Index in Array finden Java Basics - Anfänger-Themen 6
S kleinster Index der größten Komponente ? Java Basics - Anfänger-Themen 3
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
Z Erste Schritte String index out of range Java Basics - Anfänger-Themen 2
F Freier Index im Stringarray Java Basics - Anfänger-Themen 3
V Attribut aus aus jedem ArrayListen index auf Bildschirm ausgeben Java Basics - Anfänger-Themen 9
B Index out of bound exception. Warum? Java Basics - Anfänger-Themen 3
S string index out of range - es ergibt keinen Sinn Java Basics - Anfänger-Themen 6
E Arrayeintrag nach Index löschen und Array kürzen Java Basics - Anfänger-Themen 3
Ö Frage zu String index out of range: -1 Java Basics - Anfänger-Themen 12
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
X LinkedList - Index eines Objekts Java Basics - Anfänger-Themen 2
S Substring - String index out of range Java Basics - Anfänger-Themen 11
U buttonarray[this] anstatt buttonarray[index] ? Java Basics - Anfänger-Themen 12
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
MiMa Array mit ungültigen Index ansprechen Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
T Erste Schritte Java ein Array Feld[index] zurueckgeben? Java Basics - Anfänger-Themen 20
Luk10 Index bei 2 verschachtelten Schleifen Java Basics - Anfänger-Themen 2
C Klassen BubbleSort was passiert mit dem Index ? Java Basics - Anfänger-Themen 2
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
E Array bei Index ändern Java Basics - Anfänger-Themen 14
O Index Ermittlung Java Basics - Anfänger-Themen 20
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
M kurze frage: Ohne index.of position von string angeben Java Basics - Anfänger-Themen 16
G Collections Liste mit festem Index Java Basics - Anfänger-Themen 16
R ArrayList(int index, Object) funktioniert nicht korrekt? Java Basics - Anfänger-Themen 7
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
K Fehlermeldung: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 Java Basics - Anfänger-Themen 4
A dynamisches Array - Index Liste Java Basics - Anfänger-Themen 2
X Array Index Out of Bounds Java Basics - Anfänger-Themen 39
S Array bei index halbe umdrehen ohne hilfsfeld Java Basics - Anfänger-Themen 13
H String index out of range: 0 Java Basics - Anfänger-Themen 4
M index.html fehlt Java Basics - Anfänger-Themen 12
StupidAttack Fehler: String index out of range:7 Java Basics - Anfänger-Themen 10
C Datentypen ArrayList.remove(index) hinterlässt leeres Feld Java Basics - Anfänger-Themen 5
A Datentypen Nächsten freien index eines arrays finden Java Basics - Anfänger-Themen 5
S Enum als Index Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
S Fehlermeldung String index out of range?? Java Basics - Anfänger-Themen 3
J arraylist Index des größten, zweit-,dritt-,...-größten Elemtens ausgeben Java Basics - Anfänger-Themen 8
B Array mit Index 1 starten lassen Java Basics - Anfänger-Themen 5
E Höherer Index als Size in ArrayList Java Basics - Anfänger-Themen 9
S Verschiedene Arrays über Index aufrufen Java Basics - Anfänger-Themen 5
M index of bei LinkedList Java Basics - Anfänger-Themen 6
K itemlistener item index herausfinden Java Basics - Anfänger-Themen 4
P Array index per char suche auslesen Java Basics - Anfänger-Themen 3
J Array-Index nur als Integer möglich? Java Basics - Anfänger-Themen 15
H RemoteSocketAddress als Index von einem Array Java Basics - Anfänger-Themen 10
G Char erzeugen wenn Index bekannt! Java Basics - Anfänger-Themen 2
H wie spreche ich durch leerzeichen im string neuen index an Java Basics - Anfänger-Themen 10
F Arrays sortieren -> Index merken Java Basics - Anfänger-Themen 10
J Speichern des index Java Basics - Anfänger-Themen 3
J Array - Index ermitteln per Wert Java Basics - Anfänger-Themen 3
J Wie installiere ich die api index.html in meinen java editor Java Basics - Anfänger-Themen 4
E Array Index out of Bound Java Basics - Anfänger-Themen 5
E array index an methode übergeben? Java Basics - Anfänger-Themen 6
J enum Index Zugriff Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben