My program is simulating voting in the Electoral College. Each state has a certain number of votes. I am having trouble with getting my buttons for each state to return the proper amount of votes to a total, and then printing that total to the screen in a JTextField each time a button for that party is clicked.
My question is should I be using an ItemStateChanged or ActionListener? After some research online, I currently am using an ActionListener, but I can't seem to figure out the final implementation or if this is the best way of going about finishing my program.
ActionListener RadioButtonActionListener = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() instanceof JRadioButton)
{
if(Democrat.isSelected() == true)
{
String Count = StateValue.getText();
int countInteger = Integer.parseInt(Count);
int demoCount = demoCount + countInteger;
demoTotal.setText(demoCount);
}
else if (Democrat.isSelected() == false)
{
}
}
}
};
Rest of my code:
public class ElectoralCollegeGUI extends JFrame
{
private static final long serialVersionUID = 1L;
private static int demoVoteCount = 0;
private static int repVoteCount = 0;
private static int undVoteCount = 0;
private JRadioButton Democrat,Republican,Undecided;
private static String whatState;
public ElectoralCollegeGUI()
{
super("Cast Your Votes");
//JPanel mainGridPanel = new JPanel();
setLayout(new GridLayout(22,5));
JLabel demoVoteLabel = new JLabel("Democrat Votes");
JTextField demoTotal = new JTextField();
JLabel repVoteLabel = new JLabel("Republican Votes");
JTextField repTotal = new JTextField();
JLabel undVoteLabel = new JLabel("Undecided Votes");
JTextField undTotal = new JTextField();
demoTotal.setEditable(false);
repTotal.setEditable(false);
undTotal.setEditable(false);
add(demoTotal, BorderLayout.SOUTH);
add(repTotal, BorderLayout.SOUTH);
add(undTotal,BorderLayout.SOUTH);
add(demoVoteLabel);
add(repVoteLabel);
add(undVoteLabel);
String[] state = {"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut","Delaware",
"Florida" , "Georgia" ,"Hawaii","Idaho", "Illinois", "Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine 1st",
"Maine 2nd" ,"Maine Popular","Maryland", "Massachusetts","Michigan","Minnesota","Mississippi","Missouri",
"Montant", "Nebraska 1st", "Nebraska 2nd", "Nebraska 3rd", "Nebraska Popular", "Nevada","New Hampshire",
"New Jersey", "New Mexico","New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
"Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
"Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming", "Washington,D.C.",};
String[] voteValue = { "9","3","11","6","55","9","7","3","29","16","4","4","20","11","6",
"6","8","8","1","1","2","10","11","16","10","6","10","3","1","1","1",
"2","6","4","14","5","29","15","3","18","7","7","20","4","9","3","11",
"38","6","3","13","12","5","10","3","3"};
for ( int i = 0; i < 56 ; i++)
{
add(new VoteChoice(state[i] , voteValue[i]));
}
}
private class VoteChoice extends JPanel
{
private static final long serialVersionUID = 1L;
public VoteChoice(String state, String voteValue)
{
setLayout(new FlowLayout());
JLabel StateName = new JLabel(state);
JLabel StateValue = new JLabel(voteValue);
ButtonGroup party;
party = new ButtonGroup();
Democrat = new JRadioButton("Democrat");
Republican = new JRadioButton("Republican");
Undecided = new JRadioButton("Undecided");
//adds buttons to party button group
party.add(Democrat);
party.add(Republican);
party.add(Undecided);
add(StateName, BorderLayout.WEST);
add(StateValue,BorderLayout.WEST);
add(Democrat, BorderLayout.EAST);
add(Republican, BorderLayout.EAST);
add(Undecided, BorderLayout.EAST);
RadioButtonActionListener actionListener = new RadioButtonActionListener();
Democrat.addActionListener(actionListener);
Republican.addActionListener(actionListener);
Undecided.addActionListener(actionListener);