Заставить кнопку распознавать текст в JTextField

1

Моя цель состоит в том, чтобы сделать два флажка включенными, когда кто-то вводит слово "Physique" в определенный JTextField.

ТАК:

Press button
Button reads text in JTextField
if text in field is equal to Physique
then enable Checkboxes Three and Four.

Однако я не могу заставить его отвечать, когда текст введен в JTextField

String greatOne = skillGreat1JTextField.getText();

if ( greatOne.equals( "Physique" ) ) {

        physStress3CheckBox.setEnabled( true );
        physStress4CheckBox.setEnabled( true );

    } 

Это срабатывает, когда я нажимаю кнопку "Применить", но по какой-то причине. Этот оператор if не работает, потому что флажки никогда не включаются, когда Physique вводится в JTextField

Кто-нибудь знает, почему это не будет выполнено? Я в недоумении.

[РЕДАКТИРОВАТЬ]

Вот еще код. Когда я нажимаю кнопку "Применить", это должно выполняться.

public void applyJButtonActionPerformed( ActionEvent event ) {

    String greatOne = skillGreat1JTextField.getText();

    if ( greatOne.equals( "Physique" ) ) {

        physStress3CheckBox.setEnabled( true );
        physStress4CheckBox.setEnabled( true );

    } 
}

Это утверждение IF, здесь код для кнопки:

applyJButton.addActionListener(
        new ActionListener() {
            public void actionPerformed( ActionEvent event ) {
                applyJButtonActionPerformed( event );
            }
        }
    );

Кроме того, в ответ Руди, должен ли я использовать OnClickListener? Я использовал ActionListener.

[ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ]

Я понял это. Оказывается, моя проблема была связана с конфликтом с чем-то, что происходит позже в этом случае, я просто вынул строку кода, которая была отключена после того, как она только что включила их. Спасибо всем за вашу помощь.

System.out.println("Some text");

Эта одна строка текста решила всю мою проблему. Еще раз спасибо всем! Вы сохранили мои игры FATE.

  • 3
    Просто чтобы уточнить, где находится приведенный выше код? Это внутри кнопки OnClickListener? Кроме того, вы получаете какие-либо исключения? Если вы поместите System.out.println("Is running") в оператор if, печатается ли он?
  • 1
    предоставьте больше кода, где вы называете это оператором if?
Показать ещё 10 комментариев
Теги:
if-statement
checkbox
jtextfield

3 ответа

0
Лучший ответ

Здесь. Проблема была в том же самом действии.

У меня был оператор IF позже в кнопке (в то время это не показалось важным), который ссылался на другой флажок, который будет разблокировать все кнопки навыков:

if ( !unlockSkillsJCheckBox.isSelected() ) {
        skillSuperb1JTextField.setEditable( false );
        skillSuperb2JTextField.setEditable( false );
        skillSuperb3JTextField.setEditable( false );
        skillSuperb4JTextField.setEditable( false );
        skillSuperb5JTextField.setEditable( false );
        skillGreat2JTextField.setEditable( false );
        skillGreat3JTextField.setEditable( false );
        skillGreat4JTextField.setEditable( false );
        skillGreat5JTextField.setEditable( false );
        skillGood3JTextField.setEditable( false );
        skillGood4JTextField.setEditable( false );
        skillGood5JTextField.setEditable( false );
        skillFair4JTextField.setEditable( false );
        skillFair5JTextField.setEditable( false );
        skillAverage5JTextField.setEditable( false );

        consEXTRA2JTextField.setEditable( false );

        physStress3CheckBox( false ); //THE PROBLEM LIES HERE.
        physStress4Checkbox( false ); //THE PROBLEM LIES HERE.

        mentStress3CheckBox.setEnabled( false );
        mentStress4CheckBox.setEnabled( false );

    }

Оператор if работал отлично и функционировал так, как предполагалось. Но из-за этих двух линий, как только они включались, они снова отступили.

Хотя я узнал, что System.out.println("Some text"); может быть вашим лучшим другом. Используйте это, чтобы проверить логические ошибки.

Моя ошибка была логической ошибкой, которая произошла позже в том же прослушивателе действий, что и у меня. Надеюсь, это поможет любому, у кого есть такая же проблема! Спасибо Stack!

1

Если вы хотите включать/отключать флажки, когда вы нажимаете кнопку "применить", вы можете следить за @anonymous советом и ставить тест на ActionListener.

Если вы хотите включать/отключать флажки, когда набирается какой-либо текст, вы должны поместить прослушиватель в текстовое поле. В принципе, каждый раз, когда текст изменяется, компонент должен запустить событие для проверки слова и включить/отключить флажки. Вы можете сделать что-то вроде этого в части init вашего кода:

skillGreat1JTextField.getDocument().addDocumentListener(new DocumentListener() {

   @Override
   public void removeUpdate(DocumentEvent arg0) {
      checkWord();
   }

   @Override
   public void insertUpdate(DocumentEvent arg0) {
      checkWord();
   }

   @Override
   public void changedUpdate(DocumentEvent arg0) {
      checkWord();
   }

   private void checkWord() {
      String greatOne = skillGreat1JTextField.getText();
      if (greatOne.equals("Physique")) {
         physStress3CheckBox.setEnabled(true);
         physStress4CheckBox.setEnabled(true);
      }
   }
});

Вы можете найти руководство по на слушателях здесь, и именно на слушателях документов здесь.

1

Я надеюсь, что вы прописали ActionListener к apply кнопке. Это должно быть что-то вроде этого...

applyBtn.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             if("Physique".equals(skillGreat1JTextField.getText())) {
                 physStress3CheckBox.setEnabled(true);
                 physStress4CheckBox.setEnabled(true);
             }
         }
      });
  • 0
    Хотя ваш код хорош, это подразумевается в вопросе, что они уже имеют аналогичную настройку. This triggers when I press an Apply button
  • 0
    @ Руди говорит, что это одно. На самом деле реализовано это правильно, это другое. Я просто хочу убедиться, что OP зарегистрировал правильный ActionListener, потому что в конце концов у него был тег без unresponsive .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню