/* (swing1.1) */ package jp.gr.java_conf.tame.swing.table; import java.util.*; import java.awt.*; import javax.swing.*; import javax.swing.table.*; /** * @version 1.0 03/03/99 */ public class IndicatorCellRenderer extends JProgressBar implements TableCellRenderer { private Hashtable limitColors; private int[] limitValues; public IndicatorCellRenderer() { super(JProgressBar.HORIZONTAL); setBorderPainted(false); } public IndicatorCellRenderer(int min, int max) { super(JProgressBar.HORIZONTAL, min, max); setBorderPainted(false); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { int n = 0; if (! (value instanceof Number)) { String str; if (value instanceof String) { str = (String)value; } else { str = value.toString(); } try { n = Integer.valueOf(str).intValue(); } catch (NumberFormatException ex) { } } else { n = ((Number)value).intValue(); } Color color = getColor(n); if (color != null) { setForeground(color); } setValue(n); return this; } public void setLimits(Hashtable limitColors) { this.limitColors = limitColors; int i=0; int n = limitColors.size(); limitValues = new int[n]; Enumeration enum = limitColors.keys(); while (enum.hasMoreElements()) { limitValues[i++] = ((Integer)enum.nextElement()).intValue(); } sort(limitValues); } private Color getColor(int value) { Color color = null; if (limitValues != null) { int i; for (i=0;i