All pastes #790219 Raw Edit

Table_sort

public text v1 · immutable
·published 2007-11-20 05:06 UTC
rendered paste body
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++) {
						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 (((String) data[i][0])
									.compareTo((String) data[j][0]) > 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;
				// first name asc, insertion
				case 1:
					for (int i = 1; i < 5; i++) {
						int j = i - 1;
						tmp0 = (String) data[i][0];
						tmp1 = (String) data[i][1];
						tmp2 = (Integer) data[i][2];
						tmp3 = (Integer) data[i][3];
						while (j >= 0
								&& (((String) data[i][1])
										.compareTo((String) data[j][1]) > 0)) {
							data[j + 1][0] = data[j][0];
							data[j + 1][1] = data[j][1];
							data[j + 1][2] = data[j][2];
							data[j + 1][3] = data[j][3];
							j--;
						}
						data[j + 1][0] = tmp0;
						data[j + 1][1] = tmp1;
						data[j + 1][2] = tmp2;
						data[j + 1][3] = tmp3;
					}
					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 = 1; i < 5; i++) {
						int j = i - 1;
						tmp0 = (String) data[i][0];
						tmp1 = (String) data[i][1];
						tmp2 = (Integer) data[i][2];
						tmp3 = (Integer) data[i][3];
						while (j >= 0
								&& (((Integer) data[i][3])
										.compareTo((Integer) data[j][3]) < 0)) {
							data[j + 1][0] = data[j][0];
							data[j + 1][1] = data[j][1];
							data[j + 1][2] = data[j][2];
							data[j + 1][3] = data[j][3];
							j--;
						}
						data[j + 1][0] = tmp0;
						data[j + 1][1] = tmp1;
						data[j + 1][2] = tmp2;
						data[j + 1][3] = tmp3;
					}
					break;
				}
			}
			if (event.getSource() == sortDesc) {
				switch (headerSelect.getSelectedIndex()) {
				// last name desc, selection
				case 0:
					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 (((String) data[i][0])
									.compareTo((String) data[j][0]) < 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;
				// first name desc, insertion
				case 1:
					for (int i = 0; i < 5; i++) {
						tmp0 = "" + data[i][0];
						tmp1 = "" + data[i][1];
						tmp2 = (Integer) data[i][2];
						tmp3 = (Integer) data[i][3];
					}
					break;
				// age desc, 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 desc, insertion
				case 3:
					for (int i = 0; i < 5; i++) {
						tmp0 = "" + data[i][0];
						tmp1 = "" + data[i][1];
						tmp2 = (Integer) data[i][2];
						tmp3 = (Integer) data[i][3];
					}
					break;
				}
			}
			f_main.update(f_main.getGraphics());
		}
	}
}