JTable und JProgressBar

...außerdem das hier:
Code:
if (columnIndex == 0) {
    return Integer.class;
}
return String.class;
war nur ein Beispiel. Du musst hier für die Spalte(n), die Integer-Werte beinhalten, die Integer.class zurückgeben, sonst String.class (oder auch was anderes).
Und wenn ich das sehe:
Code:
table.setValueAt("Test",0,0);
table.setValueAt("10",1,0);
das wird nicht funktionieren, denn Deine erste Spalte enthält wohl Strings.
 
Moin,
stimmt auffallend... :)

Ersetz mal
Code:
table.setValueAt("Test",0,0);
table.setValueAt("10",1,0);

durch
Code:
    table.setModel(new MyTableModel());
    table.setValueAt( "Test", 0, 1 );
    table.setValueAt( "10", 1, 1 );
    table.setValueAt(new Integer(33), 0, 0);
    table.setValueAt(new Integer(50), 1, 0);

und in dem Renderer sollte es so in etwa aussehen:
Code:
public class ProgressCellRenderer extends JProgressBar implements TableCellRenderer
{

  ProgressCellRenderer(){}
  
  public Component getTableCellRendererComponent(JTable table, Object value,
                                                 boolean isSelected,
                                                 boolean hasFocus, int row,
                                                 int column)
  {
    if (value instanceof Integer)
    {
	    int intValue = ((Integer) value).intValue();
	    if ( intValue == 0 )
	      intValue = 20; // beliebiger Wert, kann man auch weglassen
	    this.setValue( intValue );
    }
    this.setBackground( table.getBackground() );
    this.setStringPainted( true );
    return this;
  }
}

Und hardcodiert im MyTableModel hinzufügen:
Code:
  public int getRowCount()
  {
    return 2;
  }
  
  public int getColumnCount()
  {
    return 2;
  }

Dann klappts auch mit der ProgressBar. :)
 
Hallo,

die Überprüfung im Renderer
Code:
if (value instanceof Integer)
kann man eigentlich weglassen, denn mit dieser Anweisung
Code:
table.setDefaultRenderer(Integer.class, new ProgressCellRenderer());
legt man fest, dass der Renderer nur für die Integer-Werte benutzt wird. ;)
 
Zurück