Разделение классов в Java.Например.виртуальная клавиатура (с активными прослушивателями) и другой класс для получения ввода от класса клавиатуры - PullRequest
1 голос
/ 17 февраля 2012

У меня есть класс виртуальной клавиатуры, который реализует только буквенно-цифровую экранную клавиатуру QWERTY с использованием JButtons в JAVA.Я установил actionlisteners для каждой кнопки, чтобы при каждом нажатии кнопки регистрировался ярлык кнопки.

Я хочу сделать так, чтобы при сохранении отдельного класса для клавиатуры я хотел создать экземпляркласса клавиатуры, чтобы он получил ввод и передал его обратно в основной класс, а затем это может произойти в цикле.Так же, как вы можете использовать has.nextLine () для продолжения запроса ввода, я хочу сделать это, создав экземпляр класса экранной клавиатуры.

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

1 Ответ

3 голосов
/ 17 февраля 2012

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

Сделать класс клавиатуры наблюдаемым

    import java.util.Observable;

    public class Keybaord extends Observable {

        private String keyThatIsPressed;

        public void setKeyThatIsPressed(String keyThatIsPressed) {
            this.keyThatIsPressed = keyThatIsPressed;
            setChanged();
            notifyObservers(keyThatIsPressed);
        }

        public String getKeyThatIsPressed(){
            return keyThatIsPressed;
        }

 }

Сделайте свой основной класс Наблюдателем

import java.util.Observable;
import java.util.Observer;

public class MainClass implements Observer {
    private String keyThatIsPressed;

    @Override
    public void update(Observable observable,
            Object object) {
        if (object instanceof String) {
            this.keyThatIsPressed = (String) object;
            System.out.println("Key that was unlucky enough to get pressed was: "
                    + keyThatIsPressed);
        } 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...