package jalview.fts.core; import java.awt.Component; import java.text.DecimalFormat; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; /** * The class to handle the formatting of the double values for JTable cells. */ public class DecimalFormatTableCellRenderer extends DefaultTableCellRenderer { private DecimalFormat formatter; public DecimalFormatTableCellRenderer(boolean isFormated, int significantFigures) { String integerFormater = isFormated ? "###,##0" : "0"; String fractionFormater = isFormated ? "###,##0." : "0."; if (significantFigures > 0) { StringBuilder significantFigureBuilder = new StringBuilder(); for (int x = 1; x <= significantFigures; ++x) { significantFigureBuilder.append("0"); } formatter = new DecimalFormat(fractionFormater + significantFigureBuilder.toString()); } else { formatter = new DecimalFormat(integerFormater); } super.setHorizontalAlignment(JLabel.RIGHT); } public DecimalFormatTableCellRenderer() { super.setHorizontalAlignment(JLabel.RIGHT); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value == null) { return null; } value = formatter.format(value); return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }