使按钮识别JTextField中的文本



我的目标是当有人在某个JTextField中键入单词"Physique"时,启用两个复选框。

所以:

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 时,复选框从未被启用

有人知道为什么这不起作用吗?我不知所措。

[编辑]

下面是更多的代码。当我按下一个名为Apply的按钮时,应该会执行此操作。

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

此外,在回复Rudi时,我应该使用OnClickListener吗?我一直在使用ActionListener。

[上次编辑]

我已经想通了。事实证明,我的问题与之后发生的事情发生了冲突在事件中,我刚刚取出了在刚刚打开它们后将其关闭的代码行。感谢大家的帮助。

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

这一行文字解决了我的全部问题。再次感谢大家!你救了我的FATE游戏。

我希望您已经向apply按钮注册了ActionListener。应该是这样的。。。

applyBtn.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             if("Physique".equals(skillGreat1JTextField.getText())) {
                 physStress3CheckBox.setEnabled(true);
                 physStress4CheckBox.setEnabled(true);
             }
         }
      });

如果您想在单击"应用"按钮时启用/禁用复选框,您可以遵循@anoymous建议并将测试放在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);
      }
   }
});

你可以在这里找到一些关于监听器的指南,特别是关于文档监听器的指南。

OP此处。问题就在同一行动中。

我在按钮后面有一个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("一些文本");可以成为你最好的朋友。使用它来测试逻辑错误。

我的错误是一个逻辑错误,后来发生在我的同一个动作监听器中。希望这能帮助到任何有同样问题的人!谢谢Stack!

最新更新