Reputation: 51
I'm making a program to return a value, from two entered numbers, with one of two calculations. But I can't get the second JButton to work. When i enter two values and click the "Get Alternative Definition", it returns nothing. I've tested my AltDefinition Class and it is working proberly. Can anyone help me find the problem in this code?:
public class BinomialCoefficient implements ActionListener {
private JTextField tJTextFieldResult;
private JTextField tTextNumber1;
private JTextField tTextNumber2;
public BinomialCoefficient(String pString) {
JFrame tJFrame = new JFrame(pString);
tJTextFieldResult = new JTextField("Enter value n and k. Note: 0 < k < n < 60", 20);
tTextNumber1 = new JTextField("n", 10);
tTextNumber2 = new JTextField("k", 10);
JButton tButton1 = new JButton("Get BinomialCoefficient");
JButton tButton2 = new JButton("Get Alternative Definition");
tButton1.addActionListener(this);
tButton2.addActionListener(this);
Container tContentPane = tJFrame.getContentPane();
tContentPane.add(tJTextFieldResult, BorderLayout.NORTH);
tContentPane.add(tTextNumber1, BorderLayout.WEST);
tContentPane.add(tTextNumber2, BorderLayout.EAST);
tContentPane.add(tButton1, BorderLayout.CENTER);
tContentPane.add(tButton2, BorderLayout.SOUTH);
tJFrame.pack();
tJFrame.setVisible(true);
}
public void actionPerformed(ActionEvent pActionEvent) {
String tCommand = pActionEvent.getActionCommand();
int number1 = new Integer(tTextNumber1.getText()).intValue();
int number2 = new Integer(tTextNumber2.getText()).intValue();
if (number1 > 60 || number2 > 60 || number1 <= 0 || number2 <= 0 || number1 < number2 ) {
tJTextFieldResult.setText("Please follow these conditions: 0 < k < n < 60");
} else if
(tCommand.equals("Get BinomialCoefficient")) {
try {
final double Result = Conditions.GetBiCoefficient(number1, number2);
tJTextFieldResult.setText("" + Result);
} catch (IOException e) {
e.printStackTrace();
}
if (number1 > 60 || number2 > 60 || number1 <= 0 || number2 <= 0 || number1 < number2 ) {
tJTextFieldResult.setText("Please follow these conditions: 0 < k < n < 60");
} else if
(tCommand.equals("Get Alternative Definition")) {
try {
final double Result2 = AltDefinition.GetAltDefinition(number1, number2);
tJTextFieldResult.setText("" + Result2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Upvotes: 0
Views: 158
Reputation: 6623
You have if (tCommand.equals("Get Alternative Definition")) {
inside your other if that checks if it equals "Get BinomialCoefficient".
If it ever equals "Get BinomialCoefficient", then it obviously can't equal "Get Alternative Definition". Rethink the flow of your action handler.
Edit: it actually looks like you just forgot a closing brace. This should correct it:
public void actionPerformed(ActionEvent pActionEvent) {
String tCommand = pActionEvent.getActionCommand();
int number1 = new Integer(tTextNumber1.getText()).intValue();
int number2 = new Integer(tTextNumber2.getText()).intValue();
if (number1 > 60 || number2 > 60 || number1 <= 0 || number2 <= 0 || number1 < number2) {
tJTextFieldResult.setText("Please follow these conditions: 0 < k < n < 60");
} else if (tCommand.equals("Get BinomialCoefficient")) {
try {
final double Result = Conditions.GetBiCoefficient(number1, number2);
tJTextFieldResult.setText("" + Result);
} catch (IOException e) {
e.printStackTrace();
}
} else if (tCommand.equals("Get Alternative Definition")) {
try {
final double Result2 = AltDefinition.GetAltDefinition(number1, number2);
tJTextFieldResult.setText("" + Result2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Upvotes: 2