1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 }