Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JTable with AbstractTableModel?

843834Dec 15 2004 — edited Dec 16 2004
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;
    }
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 13 2005
Added on Dec 15 2004
1 comment
93 views