Avatar billede bertelsen Nybegynder
16. december 2002 - 22:55 Der er 3 kommentarer og
2 løsninger

Trække data ud fra en Vector

Hej,

Jeg har i JTable med to Vectorer. Jeg ville meget gerne om nogen kunne fortælle hvordan man hiver data ud at sådan en Vector.

Her er opbygningen af min JTable:

sql = "SELECT EANNr as EAN, VareNavn as Navn, Antal, BufferAntal, ReolID as Reol, PladsNr as Plads FROM Vare ORDER BY VareNavn ASC";           
ResultSet rs = db.executeResult(sql);

Vector dbtable = new Vector();
ResultSetMetaData meta = rs.getMetaData();
           
Vector header = new Vector();
           
for (int i = 1; i <= meta.getColumnCount(); i++)
  header.add(meta.getColumnLabel(i));
   
  while (rs.next())
  {
    Vector tupple = new Vector();
               
    for (int i = 1; i <= meta.getColumnCount(); i++)
      tupple.add(rs.getObject(i));
      dbtable.add(tupple);
  }
           
  table = new JTable(dbtable, header);

Jeg vil gerne kunne hive data ud ved f.eks dobbeltklik på en række i tabellen.
Avatar billede arne_v Ekspert
16. december 2002 - 23:00 #1
Du hiver data ud af en Vector med:
  (objettype)navn.get(index);
men du vil jo nok vide hvordan GUI koden skal se ud !
Avatar billede jesperthomsen1980 Nybegynder
16. december 2002 - 23:43 #2
>arne
Du gad mig tidligere et svar, som hjalp, og som er det samme som dette problem. I dette tilfælde er det ikke en string der skal ud, men et object(vector)
import java.util.*;
import java.sql.*;
import Vare;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
public class DBvare
{   
    private DBFunctions db;
    private String sql;
    JTable table;
    private boolean DEBUG = false;
    private boolean ALLOW_ROW_SELECTION = true;
   
    public DBvare(DBFunctions d)
    {    db = d;
    }
   
    // Søger via et SQL statement i databasen og returnerer resultaterne i en Vector
    public JTable alleVarer()
    {   
       
        try
        {
            sql = "SELECT EANNr as EAN, VareNavn as Navn, Antal, BufferAntal, ReolID as Reol, PladsNr as Plads FROM Vare ORDER BY VareNavn ASC";           
            ResultSet rs = db.executeResult(sql);
                       
            Vector dbtable = new Vector();
            ResultSetMetaData meta = rs.getMetaData();
           
            Vector header = new Vector();
                   
            for (int i = 1; i <= meta.getColumnCount(); i++)
               
                header.add(meta.getColumnLabel(i));
           
           
            while (rs.next())
            {
                Vector tupple = new Vector();
               
                for (int i = 1; i <= meta.getColumnCount(); i++)
                   
                    tupple.add(rs.getObject(i));
                    dbtable.add(tupple);
            }
           
            table = new JTable(dbtable, header);
            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);                                     
            if (ALLOW_ROW_SELECTION) { // true by default
            ListSelectionModel rowSM = table.getSelectionModel();
            rowSM.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    //Ignore extra messages.
                    if (e.getValueIsAdjusting()) return;
                 
                    ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                    if (lsm.isSelectionEmpty()) {
                        System.out.println("No rows are selected.");
                    } else {
                        int selectedRow = lsm.getMinSelectionIndex();
                        System.out.println("række " + selectedRow
                                          + " is now selected.");
                     
               
                    }
                }
            });
        }
        else
        {
          table.setRowSelectionAllowed(false);
        }
     
     
        if (DEBUG) {
            table.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    printDebugData(table);
                }
            });
        }
   
         
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return table;
       
    }   
     
       
   
   
   
    // Gør data klar til opdatering af databasen
    private void printDebugData(JTable table) {
      int numRows = table.getRowCount();
      int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
          System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }
   
   
   
   
    public void opretVare(int varegruppe, String eannr, String varenavn, int antal, int bufferantal, int reolid,  int plads)
    {   
        int VareGruppe = varegruppe;
        String EanNr = "'" + eannr + "'";
        String VareNavn = "'" + varenavn + "'";
        int Antal = antal;
        int BufferAntal = bufferantal;
        int ReolId = reolid;
        int Plads = plads;
                                                       
        doOpret(VareGruppe, EanNr, VareNavn, Antal, BufferAntal, ReolId, Plads);
                                   
    }
   
    // En metode som eksekverer opdateringerne i databasen       
    public void doOpret(int VareGruppe, String EanNr, String VareNavn, int Antal, int BufferAntal, int ReolId,  int Plads)
    {   
        sql = "INSERT INTO VARE(VareGruppeID, EANNr, VareNavn, Antal, BufferAntal, ReolID, PladsNr) VALUES (" + VareGruppe  + ", " + EanNr + ", " + VareNavn + ", " + Antal + ", " + BufferAntal + ", " + ReolId + ", " + Plads + ");";
        db.executeNoResult(sql);
    }
   
}
Avatar billede arne_v Ekspert
17. december 2002 - 06:40 #3
Vector valgtTupple = (Vector)dbtable.get(selectedRow);
Object field1 = valgtTupple.get(0);
Object field2 = valgtTupple.get(1);
etc.
Avatar billede cannes Nybegynder
17. december 2002 - 08:28 #4
Jeg har løst et lignende problem på denne måde. Jeg havde også en JTable opbygget af vectorer, så har jeg proppet en mouselistener på min JTable og her er min mouseClicked:

public void mouseClicked (MouseEvent me)
    {
        boolean sendt;
        int row = tableView.getSelectedRow();
        Vector temp = (Vector) beskeder2.elementAt(row);
        String beskedAfsender = (String) temp.elementAt(1);
        String beskedTeksten = (String) temp.elementAt(5);
        Date deadLine=null, sendtDato= null;
        DateFormat DF = DateFormat.getDateInstance();
        String deadLineString =  (String)temp.elementAt(3);
        String deadlineString = FormatDate.formatDate(deadLineString);
        String sendtDateString = FormatDate.formatDate((String)temp.elementAt(0));
        if (((String)temp.elementAt(4)).equals("true"))
        sendt = true;
        else
        sendt = false;
        try
        {
            deadLine = DF.parse(deadlineString);

        }
        catch (Exception e)
        {System.out.println ("Inde i catch");}
        try
        {
            sendtDato = DF.parse (sendtDateString);
        }
        catch (Exception e)
        {
            System.out.println("Inde i catch nummer 2");
        }
        String type = (String) temp.elementAt(2);
        besked = new Besked (beskedAfsender, beskedTeksten, deadLine, sendtDato, type, sendt);
        dispose();
        send = new Send (profil, besked);
    }

beskeder2 er en todimensional vector der indeholder dataerne i tabellen
Avatar billede bertelsen Nybegynder
17. december 2002 - 11:06 #5
Tak for svarene - Begge to!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester