Как использовать класс поведения с событиями Swing? - PullRequest
0 голосов
/ 29 ноября 2011

Я пишу код для трехмерного графика и хочу, чтобы граф сцены обновлялся, когда пользователь нажимает кнопку JButton.Я пытаюсь использовать класс Behavior, но не могу найти никакой информации об использовании событий свинга для пробуждения поведения.Я ДЕЙСТВИТЕЛЬНО оценил бы любую помощь!Спасибо !!

1 Ответ

0 голосов
/ 12 января 2012

Вы можете использовать специальный объект поведения, который содержит очередь Runnables.Затем вы можете опубликовать runnables для поведения и разбудить его.Вам нужно разобраться с правильной синхронизацией, чтобы поведение перешло в спящий режим только тогда, когда в очереди больше нет команд, но оно должно работать.

Превратите класс в единый объект, чтобы иметь возможность запускать Runnable внутриBehaviorScheduler, аналог метода SwingUtilities.invokeLater ().

public class ThreadTransferBehavior extends Behavior {
    private final static int POST_ID = 9997;
    private final WakeupOnBehaviorPost m_wakeupPost = new WakeupOnBehaviorPost(this, POST_ID);

    private final Stack<Runnable> commands;


    public synchronized void processStimulus(Enumeration i) {
       while(!commands.isEmpty()) commands.pop().run();
       wakeupOn(m_wakeupPost);
    }

    public synchronized void queueCommand(Runnable r) {
      commands.push(r);
      postId(POST_ID);
    }
}
...