[ patak_daca @ 02.11.2008. 08:24 ] @
Kao što naslov kaže.

Tražio sam na netu, našao neke primere...ali mi nije jasno..

primer..

DefaultTableModel model = new DefaultTableModel();


model.addColumn("Izbor");
model.addColumn("Šifra naloga");
model.addColumn("JMBG");
model.addColumn("Ime");
model.addColumn("Prezime");



int i;

for (i=0; i<10; ++i)

{

model.addRow(new Object[]{new Boolean(false),i, i+1});


}

jTable1.setModel(model);


...

Ako neko zna kako.....

Hvala unapred!

Patak
[ _Abraxas @ 02.11.2008. 15:55 ] @
Mozes pokusati nesto ovako:
Code:

JCheckBox chk = new JCheckBox();
TableColumn t1 = tabela.getColumnModel().getColumn(1);
t1.setCellEditor(new DefaultCellEditor(chk));

tabela je tipa JTable, a parametar metoda getColumn je broj kolone gde zelis da ti se nalazi check box.

P.S. Moja preporuka ti je da kada radis sa tabelom nasledjujes klasu DefaultTableModel. Npr., ovako nesto:

Code:

public class ProizvodListModel extends DefaultTableModel
{
    String[] zaglavlje = {"Sifra proizvoda", "Naziv proizvoda", "Naziv proizvodjaca", "Tip proizvoda"};
    ArrayList<Proizvod> listaProizvoda = new ArrayList<Proizvod>();
    public ArrayList<TipProizvoda> listaTipaProizvoda = new ArrayList<TipProizvoda>();
 

    @Override
    public int getColumnCount() {
        return zaglavlje.length;
    }

    @Override
    public String getColumnName(int column) {
        return zaglavlje[column];
    }

    @Override
    public int getRowCount() {
        try
        {
            return listaProizvoda.size();
        }
        catch(Exception e)
        {
          //  e.printStackTrace();
        }
        return 0;
    }

    @Override
    public Object getValueAt(int row, int column) 
    {
        return listaProizvoda.get(row).vratiPodatke().get(column);
    }

    @Override
    public void setValueAt(Object aValue, int row, int column) 
    {
        Proizvod proizvod = listaProizvoda.get(row);
        int opcija = column;
        switch(opcija)
        {
            case 0:
                proizvod.setSifraProizvoda((String)aValue);
                break;
            case 1:
                proizvod.setNazivProizvoda((String)aValue);
                break;
            case 2:
                proizvod.setNazivProizvodjaca((String)aValue);
                break;
            case 3:
                proizvod.setTipProizvoda((TipProizvoda)aValue);
                break;
        }
        fireTableCellUpdated(row, column);
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return true;
    }


Na ovaj nacin mozes postici neku fleksibilnost za dalje izmene ili slicno. :)

[Ovu poruku je menjao _Abraxas dana 03.11.2008. u 02:23 GMT+1]

[Ovu poruku je menjao _Abraxas dana 03.11.2008. u 02:24 GMT+1]
[ patak_daca @ 02.11.2008. 17:27 ] @
Probao, dodao code...

DefaultTableModel model = new DefaultTableModel();


model.addColumn("Izbor");
model.addColumn("Šifra naloga");
model.addColumn("JMBG");
model.addColumn("Ime");
model.addColumn("Prezime");


model.getColumnClass(0).getClass();

int i;

for (i=0; i<10; ++i)

{

model.addRow(new Object[]{((Boolean) false).booleanValue(),i, i+1});


}

jTable1.getColumnModel().getColumn(0);
jTable1.getColumnModel().getColumn(0).setCellEditor(new CheckBoxCellEditor());

jTable1.setModel(model);



ali nista...

ako negde gresim...


[ _Abraxas @ 03.11.2008. 01:19 ] @
Ahhh, izvini, ja gore nisam napisao sta je chk. Parametar chk je tipa JCheckBox.
Znaci umesto new CheckBoxCellEditor(), napisi new JCheckBox(), pa probaj. :)
[ patak_daca @ 03.11.2008. 06:32 ] @
Prijavi mi grešku.....


DefaultTableModel model = new DefaultTableModel();


model.addColumn("Izbor");
model.addColumn("Šifra naloga");
model.addColumn("JMBG");
model.addColumn("Ime");
model.addColumn("Prezime");




int i;

for (i=0; i<10; ++i)

{

model.addRow(new Object[]{((Boolean) false).booleanValue(),i, i+1});


}

JCheckBox chk = new JCheckBox();
jTable1.getColumnModel().getColumn(0);
jTable1.getColumnModel().getColumn(0).setCellEditor((TableCellEditor) new JCheckBox());

jTable2.setModel(model);




...


greška je ..

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JCheckBox

gde li samo grešim...
[ Chobicus @ 03.11.2008. 08:16 ] @
Mislim da je dovoljno da iz TableModel-a iz metode getColumnClass vratiš Boolean za kolonu u kojoj hoćeš checkbox.
Pogledaj:
http://java.sun.com/docs/books.../uiswing/components/table.html
deo na strani sa podnaslovom "Concepts: Editors and Renderers".
[ patak_daca @ 03.11.2008. 12:40 ] @
Chobicus ,

jel možeš da mi daš neki primer...

Patak
[ patak_daca @ 04.11.2008. 06:41 ] @
...da li neko zna ......
[ Chobicus @ 04.11.2008. 08:13 ] @
http://java.sun.com/docs/books.../src/components/TableDemo.java

Pogledaj deo koda

Code:
/*
         * JTable uses this method to determine the default renderer/
         * editor for each cell.  If we didn't implement this method,
         * then the last column would contain text ("true"/"false"),
         * rather than a check box.
         */
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }


Poziv ove metode na 5. koloni iz primera ce vratiti klasu Boolean i swing ce da je izrenderuje kao "check box".
[ patak_daca @ 04.11.2008. 11:43 ] @
Chobicus...

jel možeš da mi kažeš gde da ubacim taj code u moj code...

Patak
[ _Abraxas @ 04.11.2008. 12:26 ] @
Citat:
patak_daca: Prijavi mi grešku.....


DefaultTableModel model = new DefaultTableModel();


model.addColumn("Izbor");
model.addColumn("Šifra naloga");
model.addColumn("JMBG");
model.addColumn("Ime");
model.addColumn("Prezime");




int i;

for (i=0; i<10; ++i)

{

model.addRow(new Object[]{((Boolean) false).booleanValue(),i, i+1});


}

JCheckBox chk = new JCheckBox();
jTable1.getColumnModel().getColumn(0);
jTable1.getColumnModel().getColumn(0).setCellEditor((TableCellEditor) new JCheckBox());


jTable2.setModel(model);




...


greška je ..

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JCheckBox

gde li samo grešim...


Redove koje sam ti oznacio crvenim slovima zameni sledecim kodom:
Code:

JCheckBox chk = new JCheckBox();
TableColumn t1 = tabela.getColumnModel().getColumn(1);
t1.setCellEditor(new DefaultCellEditor(chk));
[ patak_daca @ 04.11.2008. 12:50 ] @
Ispravio sam...

I dalje umesto JChekbox ispisuje true , false..

Please help me....
[ patak_daca @ 04.11.2008. 17:55 ] @
....
_Abraxas....help.....
[ patak_daca @ 04.11.2008. 18:06 ] @
...rešio sam...

dodao sam

jTable1.getColumnModel().getColumn(0).setCellRenderer(jTable1.getDefaultRenderer(Boolean.class));


..to je to..

Hvala _Abraxas, Chobicus....

Patak