Как ждать, пока нажата одна из кнопок? - PullRequest
0 голосов
/ 14 апреля 2011

Я работаю над проектом и застрял на месте.Я работаю с Java Swing, и это проблема:

Когда пользователь нажимает кнопку readMore, я создаю экземпляр класса VerifyFF.Теперь этот класс создает фрейм, который имеет поле ввода и две кнопки, а именно отменить и продолжить.Если пользователь нажимает «Отмена», то рамка удаляется, и ничего не нужно делать.Если он вводит правильный пароль в текстовое поле и затем нажимает «продолжение», мне нужно проверить, является ли пароль правильным или нет.Для этого я использую логическую переменную с именем проверено.

Если введенный пароль верен, то значение проверенного установлено в true, иначе ничего не происходит.Пользователь получает и запрашивает неправильный пароль, и он снова может ввести правильный пароль или нажать «Отмена».

Теперь в классе, где я создаю экземпляр класса VerifyFF, я хочу проверить, введен ли введенный пароль.было правильно или нет, поэтому я проверяю значение переменной boolean (которая также является статической).Проблема в том, что когда запускается конструктор VerifyFF, ничто не останавливает выполнение и не ждет, когда пользователь что-то введет.Обе проверки выполняются внутри функции

JButton.addActionListener(new ActionListener()
{
};

Код в экземпляре переменной класса:

VerifyFF vff = new VerifyFF ();

if(vff.verified)

readMore ();

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

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

Вам не нужно ждать, пока кто-нибудь не нажмет кнопку. Просто переместите

if(vvf.verified) readMode(); 

в ваш слушатель действия для кнопки «продолжить».

1 голос
/ 14 апреля 2011

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

Удачи, Боро.

0 голосов
/ 14 апреля 2011

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

class VerifyFF implements ActionListener {

private static final String ACTION_CONTINUE = "CONTINUE";

private JButton continueBtn = null;
private static boolean valid = false;

public VerifyFF() {
    this.continueBtn = new JButton("Continue");
    this.continueBtn.setActionCommand(VerifyFF.ACTION_CONTINUE);
    this.continueBtn.addActionListener(this);
}

public static boolean validatePassword() {
    //Validates the password field...
}

void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals(VerifyFF.ACTION_CONTINUE)) {
        VerifyFF.valid = VerifyFF.validatePassword();
    }
}

}

Таким образом, метод validate вызывается при нажатии кнопки Продолжить.и тогда вы можете делать все, что вам нужно, в соответствии с логическим значением 'valid'

...