001/* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-present, by David Gilbert and Contributors. 006 * 007 * Project Info: http://www.jfree.org/jfreechart/index.html 008 * 009 * This library is free software; you can redistribute it and/or modify it 010 * under the terms of the GNU Lesser General Public License as published by 011 * the Free Software Foundation; either version 2.1 of the License, or 012 * (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but 015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 017 * License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this library; if not, write to the Free Software 021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 022 * USA. 023 * 024 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 025 * Other names may be trademarks of their respective owners.] 026 * 027 */ 028 029package org.jfree.chart.ui; 030 031import java.awt.Component; 032import java.text.NumberFormat; 033import javax.swing.JTable; 034import javax.swing.SwingConstants; 035import javax.swing.table.DefaultTableCellRenderer; 036 037/** 038 * A table cell renderer that formats numbers with right alignment in each cell. 039 */ 040public class NumberCellRenderer extends DefaultTableCellRenderer { 041 042 /** 043 * Default constructor - builds a renderer that right justifies the 044 * contents of a table cell. 045 */ 046 public NumberCellRenderer() { 047 super(); 048 setHorizontalAlignment(SwingConstants.RIGHT); 049 } 050 051 /** 052 * Returns itself as the renderer. Supports the TableCellRenderer interface. 053 * 054 * @param table the table. 055 * @param value the data to be rendered. 056 * @param isSelected a boolean that indicates whether or not the cell is 057 * selected. 058 * @param hasFocus a boolean that indicates whether or not the cell has 059 * the focus. 060 * @param row the (zero-based) row index. 061 * @param column the (zero-based) column index. 062 * 063 * @return the component that can render the contents of the cell. 064 */ 065 @Override 066 public Component getTableCellRendererComponent(JTable table, 067 Object value, boolean isSelected, 068 boolean hasFocus, int row, int column) { 069 070 setFont(null); 071 NumberFormat nf = NumberFormat.getNumberInstance(); 072 if (value != null) { 073 setText(nf.format(value)); 074 } else { 075 setText(""); 076 } 077 if (isSelected) { 078 setBackground(table.getSelectionBackground()); 079 } else { 080 setBackground(null); 081 } 082 return this; 083 } 084 085} 086