import javax.swing.JList;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.DefaultListModel;
import javax.swing.ListSelectionModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.ListCellRenderer;
import static javax.swing.JOptionPane.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.util.ArrayList;
class Oving11 extends JFrame{
private DefaultListModel FraListe = new DefaultListModel();
private DefaultListModel TilListe = new DefaultListModel();
private JList FraValuta = new JList(FraListe);
private JList TilValuta = new JList(FraListe);
private JLabel ledetekst;
public Oving11(String tittel){
setTitle(tittel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
ledetekst = new JLabel("Velg en valuta");
add(ledetekst, BorderLayout.NORTH);
add(new ListePanel(FraValuta, FraListe), BorderLayout.WEST);
add(new ListePanel(TilValuta, TilListe), BorderLayout.EAST);
LocaleRenderer renderer = new LocaleRenderer();
FraListe.setCellRenderer(renderer);
pack();
}
private class Valuta{
private int enhet;
private double valutaKurs; // flere slike for hver valuta.
private String valutanavn;
public Valuta(String valutanavn, double valutaKurs, int enhet){
this.valutanavn = valutanavn;
this.valutaKurs = valutaKurs;
this.enhet = enhet;
}
public int getEnhet(){
return enhet;
}
public double getKurs(){
return valutaKurs;
}
public String getValuta(){
return valutanavn;
}
}
private class ListePanel extends JPanel{ //implements ListCellRenderer
public 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)
};
LocaleRenderer render = new LocaleRenderer();
public ListePanel(JList listen , DefaultListModel DLM){
DLM.addElement("Ny Valuta");
for(int i=0; i<valutaliste.length; i++){
DLM.addElement(valutaliste[i]);
System.out.println(FraListe.getElementAt(i));
System.out.println(FraListe.getElementAt(i));
}
listen.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane rulleListe = new JScrollPane(listen);
add(rulleListe);
listen.addListSelectionListener(new ListeLytter());
}
}
private class ListeLytter implements ListSelectionListener{
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
public void valueChanged(ListSelectionEvent hendelse){
int valgFra = FraValuta.getSelectedIndex();
int valgTil = TilValuta.getSelectedIndex();
ArrayList<Valuta> valutaTab = new ArrayList<Valuta>();
if(valgFra == 0 || valgTil == 0){
String valuta = showInputDialog("Navn på valuta du ønsker å registrere.");
String kursen = showInputDialog("Kurs på valuta");
String enheten = showInputDialog("skriv enhet");
double kurs = Double.parseDouble(kursen);
int enhet = Integer.parseInt(enheten);
Valuta nyValuta = new Valuta (valuta,kurs,enhet);
FraListe.addElement(nyValuta); //getvaluta();
TilListe.addElement(nyValuta);
FraValuta.clearSelection();
TilValuta.clearSelection();
}else if(valgFra > 0 && valgTil > 0){
Valuta valgEn = (Valuta)FraListe.get(valgFra);
Valuta valgTo = (Valuta)TilListe.get(valgTil);
//String valgEn = valutaTab.get(valgFra).getValuta();
//String valgTo = valutaTab.get(valgTil).getValuta();
String belopLest = showInputDialog("Fra" + valgEn.getValuta() + "Til" + valgTo.getValuta() + "Oppgi beløpet: ");
int belop = Integer.parseInt(belopLest);
//double enhetskurs1 = valgEn.getKurs() / valgEn.getEnhet();
//double enhetskurs2 = valgTo.getKurs() / valgTo.getEnhet();
//double sum = ((double)belop / enhetskurs2) * enhetskurs1;
double sum = (belop * valgTo.getKurs()) / valgEn.getKurs();
ledetekst.setText(belop + " " + valgEn.getValuta() + " tilsvarer " + sum + " " + valgTo.getValuta());
FraValuta.clearSelection();
TilValuta.clearSelection();
}
}
}
public static void main(String[]args){
Oving11 oving = new Oving11("Valutakalkulator");
oving.setVisible(true);
}
// I am trying to get the displayname with ListCellRenderer.. but I dont know how it works.
private class LocaleRenderer extends DefaultListCellRenderer {
public LocaleRenderer() {
}
public Component getListCellRendererComponent(JList list,Object value,int index, boolean isSelected,boolean cellHasFocus) {
super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);
Valuta en = (Valuta)value;
setText(en.getValuta()); // getDisplayName();
return this;
}
}
}