How do that work? Anyone?
Applying my code so if anyone wish to write and update the code, be my guest because I have hit and deadend!
Valuta.java
class Valuta
{
private double kurs;
private String valutaNamn;
private String land;
public Valuta(double k, String n, String l)
{
kurs = k;
valutaNamn = n;
land = l;
}
public double getKurs()
{
return kurs;
}
public String getNamn()
{
return valutaNamn;
}
public String getLand()
{
return land;
}
}
ValutaKurser.java
class ValutaKurser
{
private Valuta vKurser[];
private int antalValutor;
public ValutaKurser(int maxAntal)
{
vKurser = new Valuta[maxAntal];
antalValutor = 0;
}
public void laggTillValuta(Valuta v)
{
vKurser[antalValutor] = v;
antalValutor++;
}
public Valuta getValuta(int index)
{
return vKurser[index];
}
public int getAntalValutor()
{
return antalValutor;
}
public void sortera()
{
int posMin;
Valuta temp;
for (int i = 0 ; i < antalValutor - 1; i++)
{
posMin = hittaMinsta(i);
temp = vKurser;
vKurser[i] = vKurser[posMin];
vKurser[posMin] = temp;
}
}
private int hittaMinsta(int start)
{
String valuta_1;
String valuta_2;
int minsta = start;
for (int i=start + 1; i < antalValutor; i++)
{
valuta_1 = vKurser[i].getNamn();
valuta_2 = vKurser[minsta].getNamn();
if (valuta_1.compareToIgnoreCase(valuta_2)<0)
{
minsta = i;
}
}
return minsta;
}
public String toString()
{
String s="";
for(int i=0; i<antalValutor; i++)
{
Valuta v = this.getValuta(i);
s = s + v.getLand()+" "+v.getNamn()+" "+v.getKurs()+'\n';
}
return s;
}
public double omvandla(double belopp, int fran, int till)
{
return belopp*(this.getValuta(fran).getKurs()/this.getValuta(till).getKurs());
}
}
ValutaKurserCreator.java
import org.w3c.dom.*;
public class ValutaKurserCreator
{
private ValutaKurser vk;
private Document document;
/** Creates a new instance of ValutaKurserFactory */
public ValutaKurserCreator(Document document)
{
this.document = document;
}
public ValutaKurser getValutaKurser()
{
NodeList valutaNoder;
int antalValutor;
valutaNoder = document.getElementsByTagName("valuta");
antalValutor = valutaNoder.getLength();
if(antalValutor > 0)
{
vk = new ValutaKurser(antalValutor);
for(int i=0; i<antalValutor; i++)
{
String land="";
String namn="";
double kurs=0.0;
Node valutaNod = valutaNoder.item(i);
NodeList valutaChildren = valutaNod.getChildNodes();
for(int j=0; j<valutaChildren.getLength(); j++)
{
Node valutaChild = valutaChildren.item(j);
if(valutaChild.getNodeName().equals("land"))
{
land = valutaChild.getFirstChild().getNodeValue();
}
if(valutaChild.getNodeName().equals("namn"))
{
namn = valutaChild.getFirstChild().getNodeValue();
}
if(valutaChild.getNodeName().equals("kurs"))
{
kurs = Double.parseDouble(valutaChild.getFirstChild().getNodeValue());
}
}
Valuta v = new Valuta(kurs, namn, land);
vk.laggTillValuta(v);
}
}
else
vk = null;
return vk;
}
}
ValutaTabell.java
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import org.w3c.dom.*;
import java.io.*;
import java.util.Vector;
public class ValutaTabell extends JPanel
{
private ValutaKurser vKurser;
public ValutaTabell()
{
super(new GridLayout(1,0));
initValutaData();
String[] columnNames =
{"Namn", "Land", "Kurs"};
Valuta tmp;
String tempstr ="";
int antalValuta = vKurser.getAntalValutor();
Object[][] data = new Object[antalValuta][3];
for (int i=0; i<antalValuta; i++)
{
tmp = vKurser.getValuta(i);
double kurs = tmp.getKurs();
String namn = tmp.getNamn();
String land = tmp.getLand();
Double kursD = new Double(kurs);
data[0] = namn;
data[i][1] = land;
data[i][2] = kursD;
}
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 170));
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.
add(scrollPane);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI()
{
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
//Create and set up the window.
JFrame frame = new JFrame("ValutaTabell");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
ValutaTabell newContentPane = new ValutaTabell();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
private void initValutaData()
{
Document valutaDoc = null;
XMLReader valutaReader = new XMLReader();
try
{
// Under utvecklingsarbetet kan det vara en god id�
// att uttrycka filnamnet med en absolut s�kv�gf�r att
// underl�tta exekvering fr�n NetBeans
valutaDoc = valutaReader.parse((new File("valutakurser.xml")));
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(this,
"Programmet kunde inte l�sa in xml-filen med valutakurser.");
System.exit(-1);
}
ValutaKurserCreator vc = new ValutaKurserCreator(valutaDoc);
vKurser = vc.getValutaKurser();
}
}
XMLReader.java
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import java.io.IOException;
import java.io.File;
public class XMLReader
{
public XMLReader()
{
}
public Document parse(File fil) throws ParserConfigurationException, SAXException, IOException
{
DocumentBuilderFactory factory;
DocumentBuilder builder;
Document document;
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.parse(fil);
return document;
}
}