View Javadoc

1   /*
2    *  UnBBayes
3    *  Copyright (C) 2002, 2008 Universidade de Brasilia - http://www.unb.br
4    *
5    *  This file is part of UnBBayes.
6    *
7    *  UnBBayes is free software: you can redistribute it and/or modify
8    *  it under the terms of the GNU General Public License as published by
9    *  the Free Software Foundation, either version 3 of the License, or
10   *  (at your option) any later version.
11   *
12   *  UnBBayes is distributed in the hope that it will be useful,
13   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   *  GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License
18   *  along with UnBBayes.  If not, see <http://www.gnu.org/licenses/>.
19   *
20   */
21  package unbbayes.gui.table;
22  
23  import java.awt.Component;
24  import java.text.NumberFormat;
25  
26  import javax.swing.BorderFactory;
27  import javax.swing.JFormattedTextField;
28  import javax.swing.JTable;
29  import javax.swing.JTextField;
30  import javax.swing.UIManager;
31  import javax.swing.border.Border;
32  import javax.swing.plaf.UIResource;
33  import javax.swing.table.TableCellRenderer;
34  
35  /**
36   * 
37   */
38  public class NumberRenderer implements TableCellRenderer, UIResource {
39  	JFormattedTextField ftf;
40  
41  	Border emptyBorder;
42  	
43  	public NumberRenderer() {
44  		this(2, 2);
45  	}
46  
47  	public NumberRenderer(int minFracDigits, int maxFracDigits) {
48  		NumberFormat numberFormat = NumberFormat.getNumberInstance();
49  		numberFormat.setMinimumFractionDigits(minFracDigits);
50  		numberFormat.setMaximumFractionDigits(maxFracDigits);
51  		numberFormat.setMinimumIntegerDigits(1);
52  		ftf = new JFormattedTextField(numberFormat);
53  		ftf.setHorizontalAlignment(JTextField.CENTER);
54  
55  		emptyBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);
56  	}
57  
58  	public Component getTableCellRendererComponent(JTable table,
59  			Object value, boolean isSelected, boolean hasFocus, int row,
60  			int col) {
61  		if (isSelected) {
62  			ftf.setBackground(table.getSelectionBackground());
63  			ftf.setForeground(table.getSelectionForeground());
64  		} else {
65  			ftf.setBackground(table.getBackground());
66  			ftf.setForeground(table.getForeground());
67  		}
68  		if (hasFocus)
69  			ftf.setBorder(UIManager
70  					.getBorder("Table.focusCellHighlightBorder"));
71  		else
72  			ftf.setBorder(emptyBorder);
73  
74  		ftf.setValue(((Float) value));
75  		
76  		return ftf;
77  	}
78  }