stroganoff Skrevet 25. januar 2015 Del Skrevet 25. januar 2015 (endret) 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 25. januar 2015 av stroganoff Lenke til kommentar
Persn Skrevet 25. januar 2015 Del Skrevet 25. januar 2015 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
stroganoff Skrevet 25. januar 2015 Forfatter Del Skrevet 25. januar 2015 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
Persn Skrevet 25. januar 2015 Del Skrevet 25. januar 2015 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... 1 Lenke til kommentar
Joachim Hansen Skrevet 6. april 2015 Del Skrevet 6. april 2015 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå