Gå til innhold

Anbefalte innlegg

Hei

 

Jeg har problemer med å få getSelectedIndex fra en JList og får bare denne meldingen:

"The method getSelectedIndex() is undefined for the type DefaultListModel"

Er det noen som ser hva problemet kan være, eventuelt om det finnes andre muligheter?

Problemer ligger på de helt siste linjene.

import java.awt.FlowLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;

public class Oblig13GUI extends JFrame implements ActionListener{
	
	JButton leggtil = new JButton();
	JButton selg = new JButton();
	JButton aapne = new JButton();
	JButton lagre = new JButton();
	
	double pris;
	int antall;
	
	public DefaultListModel varer = new DefaultListModel<>();
	
	public Oblig13GUI(){
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//Vindu
		JFrame vindu = new JFrame();{
		this.setSize(800,600);
		this.setTitle("Supersjappe");
		
		//Layout
		FlowLayout f = new FlowLayout();
		this.setLayout(f);
		
		//Knapper
		
			leggtil.setText("Legg til vare");
			leggtil.addActionListener(this);
		
			selg.setText("Selg vare");
			selg.addActionListener(this);
		
			aapne.setText("Åpne beholdning");
			aapne.addActionListener(this);
		
			lagre.setText("Lagre beholdning");
			lagre.addActionListener(this);
		
		//Liste
		JList liste = new JList(varer);
		
		//Legg til elementer
		this.add(liste);
		this.add(leggtil);
		this.add(selg);
		this.add(aapne);
		this.add(lagre);
		
		this.setVisible(true);
		
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		if(arg0.getSource().equals(leggtil)){

			String vare = JOptionPane.showInputDialog(null, "Legg til ønsket vare");
				if (vare.equals("")){
					 vare = "Madshus Touring";
					 pris = Double.parseDouble("349");
					 antall = Integer.parseInt("1");
					 
				}
				else if (!vare.equals("")){
			String prisSomTekst = JOptionPane.showInputDialog(null, "Hva koster varen?");
			String antallSomTekst = JOptionPane.showInputDialog(null, "Hvor mange enheter?");
			pris = Double.parseDouble(prisSomTekst);
			antall = Integer.parseInt(antallSomTekst);
				}
				
			Oblig13Vare vb = new Oblig13Vare();
			vb.setVare(vare);
			vb.setPris(pris);
			vb.setAntall(antall);
			varer.addElement(vb);
		}
		else if(arg0.getSource().equals(selg)){
			int index = varer.getSelectedIndex();
				varer.removeElement(index);
			}
		}
	}
Endret av stroganoff
Lenke til kommentar
Videoannonse
Annonse

Det står jo rett fram i feilbeskjeden din hva problemet er ;) Du har opprettet en variabel "varer" av klassen "DefaultListModel". Du prøver å kalle metoden "getSelectedIndex()" fra denne variabelen, men metoden finnes ikke for den klassen.

 

Du må antagelivis revurdere implementasjonen din, sånn at den henter ut valgt objekt uten å bruke index, eller bruke en annen type liste som har funksjonalitet for å hente index. Jeg kan ikke se at DefaultListModel tilbyr uthenting av indexverdi http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html

Lenke til kommentar

Du prøver å kalle metoden "getSelectedIndex()" fra denne variabelen, men metoden finnes ikke for den klassen.

 

 

Det er akkurat det jeg har stusset på. Jeg kunne ikke se at metoden eksisterte, men noen lange runde med google, så tydet alt på at det vare en metode som BURDE eksistere. Plenty av eksempler der det brukes DefaultListModel og det kalles på getSelectedIndex. Jeg er ganske fersk i dette, så mulig det er ting jeg ikke får med meg i eksemplene, for eksempel her:

 

http://www.java2s.com/Tutorial/Java/0240__Swing/DefaultListModelandJList.htm

Lenke til kommentar

Det er akkurat det jeg har stusset på. Jeg kunne ikke se at metoden eksisterte, men noen lange runde med google, så tydet alt på at det vare en metode som BURDE eksistere. Plenty av eksempler der det brukes DefaultListModel og det kalles på getSelectedIndex. Jeg er ganske fersk i dette, så mulig det er ting jeg ikke får med meg i eksemplene, for eksempel her:

 

 

 

http://www.java2s.com/Tutorial/Java/0240__Swing/DefaultListModelandJList.htm

 

 

Ut i fra linken din så kan jeg ikke se ett eneste tilfelle av at "getSelectedIndex" blir kaldt fra en instans av "DefaultListModel". "JList" derimot...

  • Liker 1
Lenke til kommentar
  • 2 måneder senere...

private JList list;
private DefaultListModel listModel;

 

String name = listModel.getElementAt(list.getSelectedIndex()).toString();

 

----------------------------------------------------------------------------------------------------------

 

Ovenfor ser du helt klart at getSelectedIndex() benyttes på JList 

 

Tenkt  deg listModel her som en dynamisk array. 

- Du kan legge til elementer hvor som helt i modellen.

- Du kan hente ut objekter fra en gitt index.

- Hvis det er ønskelig så kan man få vite indeksen, eller indeksene som er valgt ved bruk av Jlist sin getSelectedIndex() eller getSelectedIndices(). Om disse retunerer -1 er ingen ting valgt/selected i JList.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...