import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.event.*; import java.awt.*; import java.util.*; import javax.swing.table.*; public class voting implements ActionListener { JFrame frame; JFrame frame2; JFrame frame3; JFrame frame4; JButton button; JButton button2; JButton button3; JButton button4; JTextField A; JTextField B; JTextField C; JTextField D; JPanel panel; JPanel panel2; JPanel panel3; JPanel buttons; String awins = "A wins "; String bwins = "B wins "; String cwins = "C wins"; String dwins = "D wins"; int avb=0; int avc=0; int avd=0; int bva=0; int bvc=0; int bvd=0; int cva=0; int cvb=0; int cvd=0; int dva=0; int dvb=0; int dvc=0; int ga; int gb; int gc; int gd; int avbres; int avcres; int avdres; int bvcres; int bvdres; int cvdres; int total; String geta; String getb; String getc; String getd; String test = "test"; public voting() { JLabel a = new JLabel(" Alan"); JLabel b = new JLabel(" Bob"); JLabel c = new JLabel(" Carter"); JLabel d = new JLabel(" Dilan"); A = new JTextField(1); B = new JTextField(1); C = new JTextField(1); D = new JTextField(1); button = new JButton("Submit"); button2 = new JButton("Tally Results"); button3 = new JButton("Sort Results"); button4 = new JButton("Res"); button.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); A.addActionListener(this); B.addActionListener(this); C.addActionListener(this); D.addActionListener(this); frame = new JFrame("Ballot"); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); panel = new JPanel(new GridLayout(4,2)); buttons = new JPanel(new FlowLayout()); panel.add(a); panel.add(A); panel.add(B)/>; panel.add(B)/>; panel.add(c); panel.add(C); panel.add(d); panel.add(D); buttons.add(button); buttons.add(button2); buttons.add(button3); buttons.add(button4); contentPane.add(panel, BorderLayout.CENTER); contentPane.add(buttons, BorderLayout.SOUTH); frame.setSize(500, 300); frame.setResizable(false); frame.setVisible(true); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); } public static int getwinner(int aa, int bb) { if(aa > bb) { return aa; } else{ return bb; } } public String getwin(int win) { if(avb > bva) { return awins; }else return bwins; } public void actionPerformed(ActionEvent e) { if(e.getSource()==button) { total++; geta = A.getText(); getb = B.getText(); getc = C.getText(); getd = D.getText(); ga = Integer.parseInt(geta); gb = Integer.parseInt(getb); gc = Integer.parseInt(getc); gd = Integer.parseInt(getd); if(ga < gb) { avb++; } if(ga < gc) { avc++; } if(ga < gd) { avd++; } if(gb < ga) { bva++; } if(gb < gc) { bvc++; } if(gb < gd) { bvd++; } if(gc < ga) { cva++; } if(gc < gb) { cvb++; } if(gc < gd) { cvd++; } if(gd < ga) { dva++; } if(gd < gb) { dvb++; } if(gd < gc) { dvc++; } frame2 = new JFrame("Table"); panel2 = new JPanel(); String data[][] = {{"", " A", " B", " C", " D"}, {"A", "-", "" + avb, "" + avc, "" + avd}, {"B", "" + bva, "-", "" + bvc, "" + bvd}, {"C", "" + cva, "" + cvb, "-", "" + cvd}, {"D", "" + dva, "" + dvb, "" + dvc, "-"}}; String col[] = {"A", "B", "C", "D", "E"}; DefaultTableModel model = new DefaultTableModel(data,col); JTable table = new JTable(model); table.setShowGrid(true); table.setShowVerticalLines(true); table.setGridColor(Color.gray); panel2.add(table,BorderLayout.CENTER); frame2.add(panel2); frame2.setVisible(false); frame2.setSize(400, 200); } if(e.getSource()==button2) { frame2.setVisible(true); System.out.println(total); } if(e.getSource()==button3) { avbres = getwinner(avb, bva); avcres = getwinner(avc, cva); avdres = getwinner(avd, dva); bvcres = getwinner(bvc, cvb); bvdres = getwinner(bvd, dvb); cvdres = getwinner(cvd, dvc); frame3 = new JFrame("Sort Results"); panel3 = new JPanel(); String data2[][] = {{" Pair", " Margin"}, {"A v B", "" + avbres}, {"A V C", "" + avcres }, {"A V D", "" + avdres}, {"B V C", "" + bvcres}, {"B V D", "" + bvdres}, {"C V D", "" + cvdres}}; String col2[] = {" Pair ", " Winner "}; DefaultTableModel model2 = new DefaultTableModel(data2,col2); JTable table2 = new JTable(model2); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model2); table2.setRowSorter(sorter); table2.setShowGrid(true); table2.setShowVerticalLines(true); table2.setGridColor(Color.gray); panel3.add(table2,BorderLayout.CENTER); frame3.add(panel3); frame3.setSize(400,300); frame3.setVisible(true); } if(e.getSource()==button4) { frame4 = new JFrame("Res"); JPanel panel4 = new JPanel(); String data3[][] = {{" Pair", " Winner"}, {"A v B", "" }, {"A V C", "" }, {"A V D", "" }, {"B V C", "" }, {"B V D", "" }, {"C V D", "" }}; String col3[] = { "A", "B"}; DefaultTableModel model3 = new DefaultTableModel(data3,col3); JTable table3 = new JTable(model3); table3.setShowGrid(true); table3.setShowVerticalLines(true); table3.setGridColor(Color.gray); panel4.add(table3, BorderLayout.CENTER); frame4.add(panel4); frame4.setVisible(true); frame4.setSize(400, 300); } } public static void main(String[] args) { new voting(); } }
Hi,
I'm writing a program that ranks the winner of an election using ranked pairs. I was wondering if it was possible to sort columns. the margin column in table2 needs to be sorted from largest number to smallest number. I've tried TableRowSorter but as expected that has not done anything. Is there anything else I can use?