1 package snow.sortabletable; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 import javax.swing.*; 6 import javax.swing.event.*; 7 import javax.swing.table.*; 8 9 import java.util.*; 10 11 public final class Test extends JFrame 12 { 13 14 TestModel mod; 15 SortableTableModel stm; 16 JCheckBox simpleViewCB = new JCheckBox("Simple view", false); 17 18 public Test() 19 { 20 super(); 21 this.setTitle( "Test sortable table" ); 22 23 mod = new TestModel(); 24 stm = new SortableTableModel(mod, 0, true); 25 26 final JTable table = new JTable(stm) 27 { 28 public Component _prepareEditor(TableCellEditor editor, int row, int col) 29 { 30 Component comp = editor.getTableCellEditorComponent(this,"", true,row,col); 31 return comp; 32 } 33 }; 34 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 35 stm.installGUI(table); 36 table.setDragEnabled(true); 37 38 UniversalTableCellRenderer utr = new UniversalTableCellRenderer(stm); 39 table.setDefaultRenderer(Object .class, utr); 40 table.setDefaultRenderer(Double .class, utr); 41 table.setDefaultRenderer(Integer .class, utr); 42 43 UniversalTableEditor ute = new UniversalTableEditor(); 44 table.setDefaultEditor(Object .class, ute); 45 table.setDefaultEditor(Double .class, ute); 46 table.setDefaultEditor(Integer .class, ute); 47 48 49 table.setFont(new Font("Dialog", Font.PLAIN, 14)); 50 table.setRowHeight(30); 51 52 JPanel content = new JPanel(new BorderLayout()); 53 setContentPane(content); 54 content.add(new JScrollPane(table), BorderLayout.CENTER); 55 56 JPanel controlPanel = new JPanel(); 57 content.add(controlPanel, BorderLayout.SOUTH); 58 59 JButton addBT = new JButton("Add"); 60 controlPanel.add(addBT); 61 addBT.addActionListener(new ActionListener() 62 { 63 public void actionPerformed(ActionEvent e) 64 { 65 mod.addRandom(); 66 } 67 }); 68 69 JButton removeBT = new JButton("Remove Last"); 70 controlPanel.add(removeBT); 71 removeBT.addActionListener(new ActionListener() 72 { 73 public void actionPerformed(ActionEvent e) 74 { 75 mod.removeLast(); 76 } 77 }); 78 79 JButton removeSel = new JButton("Remove Selected"); 80 controlPanel.add(removeSel); 81 removeSel.addActionListener(new ActionListener() 82 { 83 public void actionPerformed(ActionEvent e) 84 { 85 int[] sels = table.getSelectedRows(); 86 TestModelItem[] selit = new TestModelItem[sels.length]; 88 for(int i=0; i<sels.length; i++) 89 { 90 int pos = stm.getIndexInUnsortedFromTablePos(sels[i]); 91 selit[i] = mod.getItemAt(pos); 92 } 93 94 for(int i=0; i<sels.length; i++) 96 { 97 mod.remove(selit[i]); 98 } 99 } 100 }); 101 102 103 AdvancedSearchPanel searchPanel = new AdvancedSearchPanel("Search: ", null, stm, true); 105 JPanel wrap = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0)); 106 wrap.add(searchPanel); 107 searchPanel.add(Box.createHorizontalStrut(40)); 108 searchPanel.add(simpleViewCB); 109 simpleViewCB.setOpaque(false); 110 simpleViewCB.addActionListener(new ActionListener() 111 { 112 public void actionPerformed(ActionEvent e) 113 { 114 if(!simpleViewCB.isSelected()) 115 { 116 int[] allCols = new int[mod.getColumnCount()]; 117 for(int i=0; i<allCols.length; i++) allCols[i] = i; 118 stm.setVisibleColumns(allCols); 119 } 120 else 121 { 122 stm.setVisibleColumns(new int[]{0,3}); 123 } 124 stm.setPreferredColumnSizesFromModel(); 125 } 126 }); 127 128 getContentPane().add(wrap, BorderLayout.NORTH); 129 130 this.addWindowListener( new WindowAdapter() 131 { 132 @Override public void windowClosing(WindowEvent e) 133 { 134 terminateFrame(); } 136 @Override public void windowClosed(WindowEvent e) 137 { 138 terminateFrame(); } 140 } 141 ); 142 143 144 final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 145 this.setSize(800,600); 146 this.setLocation(180,120); 147 this.setVisible(true); 148 149 EventQueue.invokeLater(new Runnable () 151 { 152 public void run() 153 { 154 table.setRowSelectionInterval(40, 40); 155 table.scrollRectToVisible(table.getCellRect(100, 0, true)); 156 } 157 }); 158 159 } 161 162 163 164 private void terminateFrame() 165 { 166 System.exit(0); 167 } 168 169 170 173 public static void main( String [] arguments ) 174 { 175 JFrame.setDefaultLookAndFeelDecorated(true); 176 EventQueue.invokeLater(new Runnable () 177 { 178 public void run() 179 { 180 new Test(); 181 } 182 }); 183 } 184 185 186 public static void numericalTest() 187 { 188 long t0 = System.currentTimeMillis(); 191 double f=0.0; 192 for(int i=0;i<=1000000000;i++) 193 { 194 f += Math.sqrt(i); 195 } 196 System.out.println(f+", t="+(t0-System.currentTimeMillis())/1000+" sec"); 197 198 t0 = System.currentTimeMillis(); 199 double newsum; 200 double sumerr=0.0; 201 double err, sum=0; 202 for(int i=1;i<=1000000000;i++) 203 { 204 f= Math.sqrt(i); 205 newsum = sum + f; 206 err = (newsum - sum ) - f; 207 sumerr += err; 208 sum = newsum; 209 } 210 System.out.println((sum-sumerr)+", t="+(t0-System.currentTimeMillis())/1000+" sec"); 211 212 } 214 215 216 } | Popular Tags |