Проблемы с использованием 2 JButtons в Java - PullRequest
0 голосов
/ 02 декабря 2011

Я создаю программу для возврата значения из двух введенных чисел с одним из двух вычислений. Но я не могу заставить второй JButton работать. Когда я ввожу два значения и нажимаю «Получить альтернативное определение», он ничего не возвращает. Я проверил свой класс AltDefinition, и он работает неоправданно. Может кто-нибудь помочь мне найти проблему в этом коде?:

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();
                    }   
                }
            }
    }
}   

1 Ответ

2 голосов
/ 02 декабря 2011

У вас есть if (tCommand.equals("Get Alternative Definition")) { внутри вашего другого, если это проверяет, равно ли оно "Get BinomialCoefficient".

Если оно когда-либо равняется "Get BinomialCoefficient", то оно, очевидно, не может быть равным«Получить альтернативное определение».Переосмыслите поток вашего обработчика действий.

Редактировать: на самом деле выглядит так, будто вы только что забыли закрывающую скобку.Это должно исправить это:

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();
        }
    }
}
...