Моя цель состоит в том, чтобы сделать два флажка включенными, когда кто-то вводит слово "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.
Здесь. Проблема была в том же самом действии.
У меня был оператор 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!
Если вы хотите включать/отключать флажки, когда вы нажимаете кнопку "применить", вы можете следить за @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);
}
}
});
Вы можете найти руководство по на слушателях здесь, и именно на слушателях документов здесь.
Я надеюсь, что вы прописали ActionListener к apply
кнопке. Это должно быть что-то вроде этого...
applyBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if("Physique".equals(skillGreat1JTextField.getText())) {
physStress3CheckBox.setEnabled(true);
physStress4CheckBox.setEnabled(true);
}
}
});
This triggers when I press an Apply button
unresponsive
.
System.out.println("Is running")
в оператор if, печатается ли он?