Avatar billede brjali Nybegynder
11. december 2002 - 14:20 Der er 5 kommentarer og
1 løsning

lægge en string i en tabel

jeg har et applet og en funktion skal lægge en string i en tabel, jeg prøver at skrive:

String s = new String("min string");
table.setValueAt(s, 1, 1);

så vil jeg få "s" i det første felt i den første række,
men det virker ikke, kan det være at det skal være et objekt i stedet for en string eller ....?
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 14:31 #1
Nej, en String er et Object. Men er din JTable editerbar?
Avatar billede brjali Nybegynder
11. december 2002 - 14:58 #2
jeg har prøved at skrive:

tabel.setEditable(true);

men compileren vil det ikke....
Avatar billede elpedro Nybegynder
11. december 2002 - 15:31 #3
Det vil nok hjælpe at skrive table istedet for tabel i table.setEditable(true);
Avatar billede jonasbc Nybegynder
11. december 2002 - 17:04 #4
setValueAt(Object, int, int) bør virke, så er du sikker på, at du bare ikke får en opdateret ordneligt??
så vidt jeg husker, er det noget med, at den skal pakkes ind i en TableModel... ??

- Jonas
Avatar billede jonasbc Nybegynder
11. december 2002 - 17:06 #5
ja, du kan kalde en setTableModel(TableModel minModel); på din tabel, og så tilknytte en TableModelListener til minModel.
Avatar billede cannes Nybegynder
12. december 2002 - 15:08 #6
Du bør implementere en tableModel og så bruge Vector istedet for arrays og alt muligt andet hejs. Vector gør det meget strømlignet at bruge JTable:

protected void buildBeskedTable ()
    {
        overskrifter = new Vector();
        overskrifter.add("Date");
        overskrifter.add("Afsender");
        overskrifter.add("Type");
        overskrifter.add("Deadline");
        overskrifter.add("Sendt");

        Besked temp;
        try
        {
            for (Enumeration e = HovedProgram.beskeder.elements(); e.hasMoreElements();)
            {
                temp = (Besked) e.nextElement();
                beskeder2.add(temp.toVector());
            }
        }
        catch (NullPointerException e)
        {

        }

        dataModel = new AbstractTableModel()
        {
            public int getColumnCount() { return overskrifter.size(); }
            public int getRowCount() { return beskeder2.size();}
            public Object getValueAt(int row, int col)
            {
                return ((Vector)beskeder2.elementAt(row)).elementAt(col);
            }
            public String getColumnName(int column) {return (String)overskrifter.get(column);}
            public Class getColumnClass(int c)
            {
                return getValueAt(0, c).getClass();
            }
            public boolean isCellEditable(int row, int col) {return true;}
            public void setValueAt(Object aValue, int row, int column)
            {
                //beskeder[row][column] = aValue;
            }
        };
        tableView = new JTable(dataModel);
        tableView.addMouseListener(this);
    }

I det her eksempel ligger objekterne jeg propper ind i vectoren i en static hashtable og i Besked klassen er der en toVector metode der ser således ud:

public Vector toVector ()
    {
        Vector ret = new Vector ();
        ret.add (datoForBesked.toString());
        ret.add (afsender);
        ret.add (type);
        ret.add (deadLine.toString());
        if (sendt)
        ret.add ("true");
        else
        ret.add ("false");
        ret.add (beskedTekst);
        return ret;
    }
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