JTable for en JTable newbie
Jeg har en frame hvori jeg modtager et par arraylist's. I framen skal der være en JTable der er knyttet til en JScrollbar. JTablen skal bestå af 3 kolonner og firmaList.size() (en arraylist) rækker.Jeg har lavet framen og har knyttet en JTable til en JScrollbar. Men hvordan laver jeg den sådan at JTablen er firmaList.size() "høj" og hvordan putter jeg værdier i de enkelte dele i tabellen?
Jeg har aldrig arbejdet med JTable før så jeg vil gerne have forklaringer og selvfølgelig også gerne noget kode :o)
Mvh
Torben
Her er som min klasse ser ud nu:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import javax.swing.event.*; //Bruges til ListSelectionListener
import java.io.*;
public class Stat1 extends javax.swing.JFrame {
final ArrayList omsListe;
final ArrayList firmaListe;
public int minAar = -1;
public int maxAar = -1;
public Omsaetning omsTemp = null;
public int minTemp;
public int maxTemp;
public int tempOms;
public int iAltOms;
Dimension screenSize; //Bruges til placering af frame
Dimension selfBounds; //Bruges til placering af frame
Toolkit toolkit = Toolkit.getDefaultToolkit(); //Bruges til placering af frame
public Stat1(final ArrayList omsListe, final ArrayList firmaListe ) {
this.omsListe = omsListe;
this.firmaListe = firmaListe;
setSize(381,418);
setResizable(false);
screenSize = toolkit.getScreenSize();
selfBounds = getSize();
setLocation((screenSize.width - selfBounds.width) / 2, (screenSize.height - selfBounds.height) / 2);
initComponents();
for(int j=0;j<omsListe.size();j++) //Søger omsListe igennem for det tidligste og seneste omsætningsår
{
omsTemp = (Omsaetning)omsListe.get(j);
if(minAar==-1)
{
minAar=Integer.parseInt(omsTemp.getAar());
}
else if(minAar!=-1)
{
if(minAar>Integer.parseInt(omsTemp.getAar()))
minAar=Integer.parseInt(omsTemp.getAar());
}
if(maxAar==-1)
{
maxAar=Integer.parseInt(omsTemp.getAar());
}
else if(maxAar!=-1)
{
if(maxAar<Integer.parseInt(omsTemp.getAar()))
maxAar=Integer.parseInt(omsTemp.getAar());
}
}
for(int i=minAar; i<=maxAar; i++)//Omsætningsårene tilføjes i comboboksene
{
jCBoxAar1.addItem(""+i);
jCBoxAar2.addItem(""+i);
}
jBStat.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
minTemp=Integer.parseInt((String)jCBoxAar1.getSelectedItem());//Det valgte år gemmes som integer
maxTemp=Integer.parseInt((String)jCBoxAar2.getSelectedItem());
// jTARes.setText("");
iAltOms=0;
for(int a=0; a<omsListe.size(); a++) //Finder den totale omsætning
{
omsTemp = (Omsaetning)omsListe.get(a);
if(Integer.parseInt(omsTemp.getAar())<=maxTemp && Integer.parseInt(omsTemp.getAar())>=minTemp)
{
iAltOms+=Integer.parseInt(omsTemp.getOms());
}
}
System.out.println("Total Oms fra: "+minAar+"-"+maxAar+": "+iAltOms);
// jTARes.append("Total Oms fra: "+minAar+"-"+maxAar+":\t\t"+iAltOms+"\n\n");
for (int c=0; c<firmaListe.size(); c++)//Finder omsætning for hvert firma
{
Firma ftemp = (Firma)firmaListe.get(c);
tempOms=0;
for(int b=0; b<omsListe.size(); b++)
{
omsTemp = (Omsaetning)omsListe.get(b);
if(omsTemp.getFirma().equals(ftemp.getNavn()) && Integer.parseInt(omsTemp.getAar())<=maxTemp && Integer.parseInt(omsTemp.getAar())>=minTemp)
{
tempOms+=Integer.parseInt(omsTemp.getOms());
}
}
System.out.println(ftemp.getNavn()+": "+ tempOms);
// jTARes.append(ftemp.getNavn()+":\t\t"+ tempOms+"\n");
//jTARes.append("------------------------------\n");
}
}});
}
private void initComponents() {
jCBoxAar2 = new javax.swing.JComboBox();
jCBoxAar1 = new javax.swing.JComboBox();
jBStat = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable(firmaListe.size(), 2);
lStartAar = new javax.swing.JLabel();
lSlutAar = new javax.swing.JLabel();
lOverskrift = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
lOmsIAlt = new javax.swing.JLabel();
getContentPane().setLayout(null);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
getContentPane().add(jCBoxAar2);
jCBoxAar2.setBounds(140, 90, 90, 20);
getContentPane().add(jCBoxAar1);
jCBoxAar1.setBounds(20, 90, 90, 20);
jBStat.setText("Beregn");
getContentPane().add(jBStat);
jBStat.setBounds(270, 90, 90, 20);
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
//{null, null},
//{null, null},
//{null, null},
//{null, null}
},
new String [] {
"Firma", "Omsætning", "i %"
}
));
// jTable1.setModel(omsListe.size(), omsListe.size());
jScrollPane2.setViewportView(jTable1);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(20, 150, 340, 230);
lStartAar.setText("Start \u00e5r");
getContentPane().add(lStartAar);
lStartAar.setBounds(20, 70, 50, 16);
lSlutAar.setText("Start \u00e5r");
getContentPane().add(lSlutAar);
lSlutAar.setBounds(140, 70, 50, 16);
lOverskrift.setFont(new java.awt.Font("Book Antiqua", 1, 24));
lOverskrift.setText("Statistik");
getContentPane().add(lOverskrift);
lOverskrift.setBounds(150, 10, 120, 30);
lOmsIAlt.setText("Samlet oms\u00e6tning i perioden:");
getContentPane().add(lOmsIAlt);
lOmsIAlt.setBounds(20, 130, 250, 16);
getContentPane().add(jSeparator1);
jSeparator1.setBounds(0, 50, 380, 10);
pack();
}
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {
dispose();
}
// Variables declaration - do not modify
private javax.swing.JLabel lStartAar;
private javax.swing.JLabel lOmsIAlt;
private javax.swing.JComboBox jCBoxAar1;
private javax.swing.JComboBox jCBoxAar2;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lOverskrift;
private javax.swing.JLabel lSlutAar;
private javax.swing.JButton jBStat;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
