1 package snow.sortabletable; 2 3 4 import java.awt.*; 5 import java.awt.event.*; 6 import javax.swing.*; 7 import javax.swing.event.*; 8 import javax.swing.table.*; 9 10 import java.util.*; 11 12 14 public final class Test2 extends JFrame{ 16 final JTable rowIndexTable = new JTable(); 17 final JTable table = new JTable(); 18 TestModel tableModel = new TestModel(); 19 RowHeaderExtractorWrapperSortableTableModel m1, m2; 20 SortableTableModel sortableTableModel; 21 JScrollPane scrollPane, scrollPaneIndex; 22 23 public Test2() 24 { 25 super("Test with index"); 26 27 sortableTableModel = new SortableTableModel(tableModel, 0, true); 28 29 m1 = new RowHeaderExtractorWrapperSortableTableModel(true, sortableTableModel, 2); 30 m2 = new RowHeaderExtractorWrapperSortableTableModel(false, sortableTableModel, 2); 31 32 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 33 rowIndexTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 34 35 table.setModel(m2); 36 rowIndexTable.setModel(m1); 37 38 table.setRowMargin(3); 39 rowIndexTable.setRowMargin(3); 40 41 43 rowIndexTable.setBackground(table.getTableHeader().getBackground()); 44 45 sortableTableModel.installGUI(rowIndexTable, table); 47 48 49 getContentPane().setLayout(new BorderLayout()); 50 scrollPaneIndex = new JScrollPane(rowIndexTable); 51 52 55 scrollPane = new JScrollPane(table); 56 getContentPane().add(scrollPane, BorderLayout.CENTER); 57 58 59 rowIndexTable.setPreferredScrollableViewportSize(new Dimension(150,5000)); 61 62 66 67 69 71 74 scrollPane.setRowHeaderView(scrollPaneIndex.getViewport()); 76 77 final JTableHeader th = rowIndexTable.getTableHeader(); 78 scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, (Component) th); 79 JViewport tv = new JViewport(); 80 tv.setView(table.getTableHeader()); 81 scrollPane.setColumnHeader(tv); 82 83 109 110 installControlPanel(); 111 112 setSize(800,450); 113 setVisible(true); 114 115 116 } 118 119 private void installControlPanel() 120 { 121 JPanel controlPanel = new JPanel(); 122 getContentPane().add(controlPanel, BorderLayout.SOUTH); 123 124 JButton addBT = new JButton("Add"); 125 controlPanel.add(addBT); 126 addBT.addActionListener(new ActionListener() 127 { 128 public void actionPerformed(ActionEvent e) 129 { 130 tableModel.addRandom(); 131 } 132 }); 133 134 JButton removeBT = new JButton("Remove Last"); 135 controlPanel.add(removeBT); 136 removeBT.addActionListener(new ActionListener() 137 { 138 public void actionPerformed(ActionEvent e) 139 { 140 tableModel.removeLast(); 141 } 142 }); 143 144 JButton removeSel = new JButton("Remove Selected"); 145 controlPanel.add(removeSel); 146 removeSel.addActionListener(new ActionListener() 147 { 148 public void actionPerformed(ActionEvent e) 149 { 150 int[] sels = table.getSelectedRows(); 151 TestModelItem[] selit = new TestModelItem[sels.length]; 153 for(int i=0; i<sels.length; i++) 154 { 155 int pos = sortableTableModel.getIndexInUnsortedFromTablePos(sels[i]); 156 selit[i] = tableModel.getItemAt(pos); 157 } 158 159 for(int i=0; i<sels.length; i++) 161 { 162 tableModel.remove(selit[i]); 163 } 164 165 166 } 167 }); 168 169 170 171 AdvancedSearchPanel searchPanel = new AdvancedSearchPanel("Search: ", null, this.sortableTableModel, true); 172 getContentPane().add(searchPanel, BorderLayout.NORTH); 173 174 175 176 this.addWindowListener( new WindowAdapter() 177 { 178 public void windowClosing(WindowEvent e) 179 { 180 System.exit(0); 181 } 182 public void windowClosed(WindowEvent e) 183 { 184 System.exit(0); 185 } 186 } 187 ); 188 } 189 190 191 194 public static void main( String [] arguments ) 195 { 196 EventQueue.invokeLater(new Runnable () 197 { 198 public void run() 199 { 200 new Test2(); 201 } 202 }); 203 } 205 206 } | Popular Tags |