Gå til innhold

[Løst] Problemer med JList


Anbefalte innlegg

Vi har fått i oppgave å lage en valutakalkulator. Den skal vi lage ved hjelp av JList. Vi ska ha to slike lister og ingen knapper. Når det er valgt en valuta i begge listene skal det komme opp en showInputDialog. Vi bruker en klasse for valutakurser og lager en tabell av den i klassen Vindu. Konstruktøren til Valuta inneholder valuta, kurs og enhet. Når jeg da oppretter en tabell av den klassen med valutakurser oppstår problemet. Hvordan får jeg kun hentet ut valutadelen av det nye objektet, slik at det blir skrevet ut i JListen? Og hvordan henter jeg isåfall ut kursen slik at jeg kan regne det om?

Problemet er å få skrevet ut valutaene i JList slik at de vises når programmet kjøres. I tillegg til at jeg ikke vet hvordan jeg får hentet ut kursene slik at jeg kan lage en formel for omregning.

 

Dette er kanskje dårlig forklart men dere skjønner det nok bedre når dere ser koden:

/**
* Valutaberegner.java
*
* Et program som regner mellom valutaer med et fint GUI.
*
**/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Valuta{
private String valuta;
private double kurs;
private int enhet;
public Valuta(String valuta, double kurs, int enhet){
 this.valuta = valuta;
 this.kurs = kurs;
 this.enhet = enhet;
}
public String getValuta(){
 return valuta;
}
public double getKurs(){
 return kurs;
}
public int getEnhet(){
 return enhet;
}
}
class Vindu extends JFrame{
Valuta[] valutaliste = {
 new Valuta("Euro", 8.10, 1), new Valuta("US Dollar", 6.23, 1),
 new Valuta("Britiske pund", 12.27, 1), new Valuta("Svenske kroner", 88.96, 100),
 new Valuta("Danske kroner", 108.75, 100), new Valuta("Yen", 5.14, 100),
 new Valuta("Islandske kroner", 9.16, 100), new Valuta("Norske kroner", 100, 100)};
private JList fraValuta = new JList(valutaliste); // Man kan vel ikke ta valutaliste som  
// argument om man vil ha ut navnet på valutaen, må man sette opp en for-løkke og skrive // ut tabellelementene? Evt hvordan velger man da det første, på index 0 ligger jo hele //objektet av Valuta?
private JList tilValuta = new JList(valutaliste);
private JTextField tekst = new JTextField("Du har ennå ikke valgt en valuta.");
public Vindu(String tittel){
 setTitle(tittel);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 JLabel ledetekst = new JLabel("Velg en valuta du vil omforme og så hvilken du vil omforme til.");
 add(ledetekst, BorderLayout.NORTH);
 JScrollPane rullefeltMedListe = new JScrollPane(fraValuta);
	add(rullefeltMedListe, BorderLayout.CENTER);
	JScrollPane rullefeltMedListe2 = new JScrollPane(tilValuta);
	add(rullefeltMedListe2, BorderLayout.CENTER);
	ListeboksLytter lytter = new ListeboksLytter();
	fraValuta.addListSelectionListener(lytter);
 tilValuta.addListSelectionListener(lytter);
	tekst.setEditable(false);
	add(tekst, BorderLayout.SOUTH);
	pack();
}
private class ListeboksLytter implements ListSelectionListener{
 public void valueChanged(ListSelectionEvent hendelse){
// Hvordan jeg skal sette det opp her er jeg usikker på.
 }
}
}
public class Valutaberegner{
 public static void main(String[]args){
  Vindu etVindu = new Vindu("Valutaberegner");
  etVindu.setVisible(true);
 }
}

Endret av unbreakable163
Lenke til kommentar
Videoannonse
Annonse

Problemet er å få skrevet ut valutaene i JList slik at de vises når programmet kjøres.

 

Går du på HiST? Oppgaven virket veldig kjent.

 

Uansett så er det første problemet veldig enkelt hvis du forstår hva det er som blir skrevet ut. Valuta@blabla er en standard-toString til klassen Valuta når du ikke har spesifisert din egen toString-metode.

 

Løsning:

Lag en toString i klassen Valuta hvor du skriver det du vil ha utskrevet for hver rad i JList.

 

private JList fraValuta = new JList(valutaliste); // Man kan vel ikke ta valutaliste som 
// argument om man vil ha ut navnet på valutaen, må man sette opp en for-løkke og skrive // ut tabellelementene? Evt hvordan velger man da det første, på index 0 ligger jo hele //objektet av Valuta?

 

Du trenger ikke å bruke en for-løkke når du skal hente ut kun en gitt verdi om gangen.

JList har en getSelectedValue()-metode, med den kan du hente ut en valgt valuta, fra valutan kan du hente ut ønsket informasjon.

Endret av Persn
Lenke til kommentar

Går du på HiST? Oppgaven virket veldig kjent.

 

Uansett så er det første problemet veldig enkelt hvis du forstår hva det er som blir skrevet ut. Valuta@blabla er en standard-toString til klassen Valuta når du ikke har spesifisert din egen toString-metode.

 

Løsning:

Lag en toString i klassen Valuta hvor du skriver det du vil ha utskrevet for hver rad i JList.

 

 

 

Du trenger ikke å bruke en for-løkke når du skal hente ut kun en gitt verdi om gangen.

JList har en getSelectedValue()-metode, med den kan du hente ut en valgt valuta, fra valutan kan du hente ut ønsket informasjon.

 

Går på HiST ja, takk for hjelpen. Det angående toStringen burde jeg husket, takk igjen.

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å
×
×
  • Opprett ny...