A JTable to display rows of integers, doubles and Strings. BH 2020.03.30 See note in DataRowModel.java @author Wolfgang Christian @version 1.0
| 36 | * @version 1.0 |
| 37 | */ |
| 38 | @SuppressWarnings("serial") |
| 39 | public class DataRowTable extends JTable implements ActionListener { |
| 40 | static final Color PANEL_BACKGROUND = javax.swing.UIManager.getColor("Panel.background"); //$NON-NLS-1$ |
| 41 | static final Color LIGHT_BLUE = new Color(204, 204, 255); |
| 42 | protected int labelColumnWidth = 40; |
| 43 | DataRowModel rowModel = new DataRowModel(); |
| 44 | RowNumberRenderer indexRenderer = new RowNumberRenderer(); |
| 45 | CellRenderer cellRenderer = new CellRenderer(); |
| 46 | String formatPattern = "0.000"; //$NON-NLS-1$ |
| 47 | DecimalFormat defaultFormat = org.opensourcephysics.numerics.Util.newDecimalFormat(formatPattern); |
| 48 | int refreshDelay = 0; // time in ms to delay refresh events |
| 49 | javax.swing.Timer refreshTimer = new javax.swing.Timer(refreshDelay, this); // delay for refreshTable |
| 50 | java.util.Dictionary<Integer, DecimalFormat> formats = new java.util.Hashtable<Integer, DecimalFormat>(); |
| 51 | |
| 52 | /** |
| 53 | * Constructor DataRowTable |
| 54 | */ |
| 55 | public DataRowTable() { |
| 56 | super(); |
| 57 | init(); |
| 58 | } |
| 59 | |
| 60 | /** |
| 61 | * Initializes the table. |
| 62 | */ |
| 63 | protected void init() { |
| 64 | refreshTimer.setRepeats(false); |
| 65 | refreshTimer.setCoalesce(true); |
| 66 | setModel(rowModel); |
| 67 | setColumnSelectionAllowed(true); |
| 68 | setGridColor(Color.blue); |
| 69 | setSelectionBackground(LIGHT_BLUE); |
| 70 | setSelectionForeground(Color.red); // foreground color for selected cells |
| 71 | setColumnModel(new DataTableColumnModel()); |
| 72 | setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); |
| 73 | setColumnSelectionAllowed(true); |
| 74 | rowModel.addTableModelListener(new TableModelListener() { |
| 75 | @Override |
| 76 | public void tableChanged(TableModelEvent e) { |
| 77 | //showChange(e); |
| 78 | DataRowTable.this.firePropertyChange("cell", null, e); //$NON-NLS-1$ |
| 79 | } |
| 80 | |
| 81 | // private void showChange(TableModelEvent e) { |
| 82 | // // forward the table model event to property change listeners |
| 83 | // String type = "" + e.getType(); |
| 84 | // switch (e.getType()) { |
| 85 | // case 0: |
| 86 | // type = "UPDATE"; |
| 87 | // break; |
| 88 | // case 1: |
| 89 | // type = "INSERT"; |
| 90 | // break; |
| 91 | // case -1: |
| 92 | // type = "DELETE"; |
| 93 | // break; |
| 94 | // } |
| 95 | // System.out.println("DataRowTable model listener tableChanged type " + type); |
nothing calls this directly
no test coverage detected