Методы Java при работе с Swing - Можно ли вызвать метод события в другом методе события того же класса? - PullRequest
0 голосов
/ 03 сентября 2018

, поэтому я новичок в Java и сейчас использую свинг. У меня есть метод (первый метод), который делает некоторый код, когда я набираю конкретный jField и отпускаю ключ. У меня также есть jCheckBox, поэтому, когда я ставлю или снимаю флажок, он выполняет какое-то действие, это второй метод.

Поэтому я хочу, чтобы, когда я ставил или снимал флажок, вызывал мой первый метод, а первый метод должен выполнять его код. Но, похоже, у меня проблема, и я не могу назвать этот метод по какой-то причине.

Часть первого метода :

   private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {  
       //code
}

Второй метод пытается вызвать первый метод :

private void pensionCheckBoxStateChanged(javax.swing.event.ChangeEventevt) {                                             
       bruttoTextFieldKeyReleased();
}    

Эти методы были созданы с помощью этого меню

И это подсказка, но я не уверен, что мне нужно сделать, для этого потребовалось какое-то KeyEvent? Я просто хочу запустить один метод из другого, не вводя никакого значения и не возвращая.

Подсказка об ошибке

1 Ответ

0 голосов
/ 04 сентября 2018

Чтобы немного расширить комментарий Луви и преобразовать его в ответ, используя ваш код.

Прямо сейчас, первый метод берет KeyEvent и выглядит так:

private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {
  double salaryBrutto = Double.parseDouble(bruttoTextField.getText());

  double taxPensRound;
  if (pensionCheckBox.isSelected()) {
    double taxPens = salaryBrutto * TAX_PENS;
    //more code

Судя по скриншотам, похоже, что вы, скорее всего, автоматически создали его из компоновщика GUI и не используете параметр KeyEvent evt. Вы не можете вызвать этот метод, не передав KeyEvent, поэтому PensionCheckBoxStateChanged не может вызвать его.

Luvy предложил бы создать новый метод из кнопки bruttoTextFieldKeyReleased, поэтому после слов у вас будет два метода:

private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {
  calculatePensionInformation();
  //maybe do something with evt later on
}

и

private void calculatePensionInformation() {
  double salaryBrutto = Double.parseDouble(bruttoTextField.getText());

  double taxPensRound;
  if (pensionCheckBox.isSelected()) {
    double taxPens = salaryBrutto * TAX_PENS;
    //more code

}

На этом этапе вы можете изменить существующий второй метод на:

private void pensionCheckBoxStateChanged(javax.swing.event.ChangeEventevt) {                                             
   calculatePensionInformation();
}    

И это будет работать, как и ожидалось, так как для CalculationPensionInformation не требуется никаких параметров, а вы не передаете никаких параметров.

...