import javax.swing.*; import java.awt.*; import java.awt.event.*; public class mainTable { JFrame f_main; Container c_main; JPanel p_main; JTable table; JScrollPane scrollPane; JButton sortAsc, sortDesc; JComboBox headerSelect; String tmp0, tmp1; Integer tmp2, tmp3; String[] columnNames = { "Last Name", "First Name", "Age", "Test Score" }; Object[][] data = { { "Smith", "Dave", new Integer(12), new Integer(75) }, { "Johnson", "Bill", new Integer(14), new Integer(72) }, { "Anderson", "Sara", new Integer(11), new Integer(92) }, { "Hoyez", "Kara", new Integer(16), new Integer(83) }, { "Cruz", "Kyle", new Integer(13), new Integer(84) } }; public mainTable() { f_main = new JFrame("CPSP.4 Table Sorting"); c_main = f_main.getContentPane(); p_main = new JPanel(); table = new JTable(data, columnNames); table.setPreferredScrollableViewportSize(new Dimension(500, 80)); scrollPane = new JScrollPane(table); sortAsc = new JButton("Ascending"); sortDesc = new JButton("Descending"); sortAsc.addActionListener(new mainListener()); sortDesc.addActionListener(new mainListener()); headerSelect = new JComboBox(columnNames); headerSelect.addActionListener(new mainListener()); p_main.add(new JLabel("Sort by:")); p_main.add(headerSelect); p_main.add(sortAsc); p_main.add(sortDesc); p_main.add(scrollPane); c_main.add(p_main); f_main.setSize(520, 172); f_main.setVisible(true); } private class mainListener implements ActionListener { public void actionPerformed(ActionEvent event) { if (event.getSource() == sortAsc) { switch (headerSelect.getSelectedIndex()) { // last name asc, selection case 0: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; // first name asc, insertion case 1: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; // age asc, selection case 2: for (int i = 0; i < 5; i++) { for (int j = i + 1; j < 5; j++) { tmp0 = "" + data[i][0]; tmp1 = "" + data[i][1]; tmp2 = (Integer) data[i][2]; tmp3 = (Integer) data[i][3]; if (((Integer)data[i][2]).compareTo((Integer)data[j][2]) > 0) { data[i][0] = data[j][0]; data[i][1] = data[j][1]; data[i][2] = data[j][2]; data[i][3] = data[j][3]; data[j][0] = tmp0; data[j][1] = tmp1; data[j][2] = tmp2; data[j][3] = tmp3; } } } break; // scores asc, insertion case 3: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; } } if (event.getSource() == sortDesc) { switch (headerSelect.getSelectedIndex()) { // last name desc, selection case 0: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; // first name desc, insertion case 1: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; // age desc, selection case 2: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; // scores desc, insertion case 3: for (int i = 0; i < 5; i++) { tmp0 = (String)data[i][0]; tmp1 = (String)data[i][1]; tmp2 = Integer.parseInt((String)data[i][2]); tmp3 = Integer.parseInt((String)data[i][3]); } break; } } } } // public void insertionSort() { // int in, out; // // for (out = 1; out < 5; out++) // out is dividing line // { // templn = data[out][0]; // remove marked item // tempfn = data[out][1]; // tempag = data[out][2]; // tempsc = data[out][3]; // in = out; // start shifts at out // while (in > 0 && a[in - 1] >= temp) // until one is smaller, // { // a[in] = a[in - 1]; // shift item right, // --in; // go left one position // } // a[in] = temp; // insert marked item // } // end for // } // end insertionSort() // // public static void selectionSort1(int[] x) { // for (int i = 0; i < x.length - 1; i++) { // for (int j = i + 1; j < x.length; j++) { // if (x[i] > x[j]) { // // ... Exchange elements // int temp = x[i]; // x[i] = x[j]; // data blah here // x[j] = temp; // } // } // } // } }