Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

обработка событий массива кнопок

2.1K
15 марта 2008 года
госик
98 / / 20.11.2006
вот такой код:
Код:
for (int i = 0; i < buttons.length; i++)
{
    if ((ae.getSource().equals(buttons))
            && (buttons.getText().equals("+")))
    {
        this.currentOperation = new OperationsFactory().GetOperation("+");
        this.currentOperation.setFirstOperand(Float.parseFloat(this.tf.getText()));
        this.firstPart = 0;
        this.secondPart = 0;
        this.decimal = true;
    }
    if ((ae.getSource().equals(buttons))
            && (buttons.getText().equals("-")))
    {
        this.currentOperation = new OperationsFactory().GetOperation("-");
        this.currentOperation.setFirstOperand(Float.parseFloat(this.tf.getText()));
        this.firstPart = 0;
        this.secondPart = 0;
        this.decimal = true;
    }
...
}

почему-то когда пишу явно строку в GetOperation - все прекрасно работает, но если пишу так: GetOperation(buttons.getText()) - не работает. не уверена, что вообще правильно обрабатываю нажатие кнопки. ae.getSource() - мне нужно для того, чтобы прога поняла, что я нажала кнопку, а выражение с equals - понять, какая именно нажата кнопка.
360
15 марта 2008 года
P*t*
474 / / 15.02.2007
Ошибку не вижу.

А так работает?
 
Код:
String s = "+"
new OperationsFactory().GetOperation(s);

 
Код:
String s = buttons.getText();
new OperationsFactory().GetOperation(s);


P.S
насчёт ae.getSource() - мне кажется лучше создавать свой листенер для каждой кнопки.
2.1K
17 марта 2008 года
госик
98 / / 20.11.2006
Цитата: P*t*
Ошибку не вижу.

А так работает?
 
Код:
String s = "+"
new OperationsFactory().GetOperation(s);



так работает. а почему тогда через buttons.getText().equals("+") не работает?

63
17 марта 2008 года
Zorkus
2.6K / / 04.11.2006
Пробовал выводить в лог содержимое того, что ты сравниваешь?
360
17 марта 2008 года
P*t*
474 / / 15.02.2007
[QUOTE=госик]
так работает. а почему тогда через buttons.getText().equals("+") не работает?[/QUOTE]

Всётаки советую делать новый листенер для каждой кнопки. В таком случае ему не придётся узнавать что на кнопке написано.

P.S Вот ещё может быть такая ошибка - вдруг ты забываешь кнопки в массив класть?
38K
28 марта 2008 года
in8finity
3 / / 28.03.2008
Почему бы не использовать для решения этой задачи механизм Actions, не придумывая его функционал заново (выполнение различных действий для различных кнопок).
Плюс он позволит легко автоматически привязать действия к нажатиям сочетаний кнопок на клавиатуре и даже повесить все это в меню, то есть обеспечит нормальную централизацию обработки действий пользователя.

http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html

в том плане,что можно каждой кнопке назначить свое действие и даже если массив кнопок формируется динамически, то можно при его формировании использовать фабрику действий (Action).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог