Hallo
ich habe ein kleines Problem mit meinem Renderer. Ich binde in einen JTable eine ProgressBar ein. Dazu habe ich folgenden Renderer. Funktioniert auch perfekt. Nun habe ich jedoch das Problem, das die Progressbar in der Zeile 1 z.B. von 0 bis 100, die ProgressBar in der Zeile 2 jedoch von 0 bis 150 laufen soll. Da ich jede Minute den Wert aktuallisieren muss, kann ich nicht einfach die PB in Zeile 2 von 150 auf 100 runterskalieren und die Wartezeit für einen Tick erhöhen.
Daher die Frage. Wie kann ich meinem Renderer für jede Zeile die maxValue mitteilen?
ich habe ein kleines Problem mit meinem Renderer. Ich binde in einen JTable eine ProgressBar ein. Dazu habe ich folgenden Renderer. Funktioniert auch perfekt. Nun habe ich jedoch das Problem, das die Progressbar in der Zeile 1 z.B. von 0 bis 100, die ProgressBar in der Zeile 2 jedoch von 0 bis 150 laufen soll. Da ich jede Minute den Wert aktuallisieren muss, kann ich nicht einfach die PB in Zeile 2 von 150 auf 100 runterskalieren und die Wartezeit für einen Tick erhöhen.
Daher die Frage. Wie kann ich meinem Renderer für jede Zeile die maxValue mitteilen?
Java:
class ProgressRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
private final JProgressBar b = new JProgressBar(0, 100);
public ProgressRenderer() {
super();
setOpaque(true);
b.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
b.setStringPainted(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer)value;
String text = "Done " + i;
if (i==-1000){
text = "Scanning";
}else if(i<0) {
text = "Canceled";
}else if(i<100) {
b.setValue(i);
return b;
}
super.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column);
return this;
}
}
Zuletzt bearbeitet von einem Moderator: