Search code examples
javaswingjtablejprogressbartablecellrenderer

java - how to get object inside cell in jtable


Possible Duplicate:
Adding multiple JProgressBar to TableColumn of JTable

i have a jTable with a DefaultTableModel with this coloumn:

String String JProgressBar

and every row is created like this:

progress.add(getProgress(x, total));
d.addRow(new Object[]{category, "Initializing..", progress.get(work)});

Where getProgress is:

private JProgressBar getProgress(int x, int total) {
        JProgressBar progressCsv = new JProgressBar();
        progressCsv.setMaximum(totale);
        progressCsv.setStringPainted(true);
        progressCsv.setString("0%");
        return progressCsv;
}

And progress:

progress = new ArrayList<JProgressBar>();

My class implements TableCellRenderer so

@Override
    public Component getTableCellRendererComponent(JTable jtable, Object o, boolean bln, boolean bln1, int i, int i1) {
        int v = Integer.parseInt(o.toString());
        JProgressBar b = (JProgressBar) jtable.getModel().getValueAt(i, i1);
        b.setValue(v);
        return null;
    }

Where i and i1 are 0 - 2. so the first row and third coloum ( JProgressBar ).

On: JProgressBar b = (JProgressBar) jtable.getModel().getValueAt(i, i1); i get

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to javax.swing.JProgressBar

Where is the problem? can you help me?


Solution

  • if you use ArrayList you could :

    public Component getTableCellRendererComponent(JTable jtable, Object o, boolean bln, boolean bln1, int i, int i1) {
            int v = Integer.parseInt(o.toString());
            JProgressBar b = progress.get(i);
            b.setValue(v);
            return b;
        }