krembrule2016
@krembrule2016

Как реализовать перемещение кнопки по ее нажатию?

Добрый день!

nButton1.setOnAction(new EventHandler<ActionEvent>(){
	public void handle(ActionEvent ae){
		for(int i=0; i<30; i++){
	    translate.setX(0); 
        translate.setY(i); 
        translate.setZ(0);
		nButton1.getTransforms().add(translate); 
		try {
                th.sleep(33);
            } catch (InterruptedException ex) {
                Logger.getLogger(Big_shot.class.getName()).log(Level.SEVERE, null, ex);
            }
		}	
		}
	});

Написал такой кусок кода. По моей логике по нажатию на кнопку мы должны попадать в цикл, в котором кнопка будет чуть уезжать на север.
Однако, этого не происходит. И кнопка просто исчезает. В чем я неправ?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
При создании окна создаётся Поток Обработки Событий, внутри которого будет работать цикл событий и обработчики событий. Любые события отправляются в очередь событий, откуда извлекаются и обрабатываются на очередной итерации цикла событий. Поэтому бесполезно использовать циклы для изменения состояния элементов графического интерфейса. Кроме того, вы не должны пытаться из главного потока или любого другого потока взаимодействовать с элементами графического интерфейса - это приведёт к сбою. Вы не должны внутри обработчиков событий запускать потоки - это приведёт к сбою. И вы не должны останавливать поток - это приведёт к сбою.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽