Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   GUI. Проблема с перемещением картинки (https://forum.zone-game.info/showthread.php?t=25315)

coldy 26.12.2012 09:05

GUI. Проблема с перемещением картинки
 
Занялся написанием программы с GUI впервые, поэтому возникла проблема. Просьба наставить на путь истинный или помочь советом, ибо застрял.

Делается все в IDEA с помощью UI Designer. GUI Form - FormLayout (JGoodies).

Для наглядности прилагаю картинку:

http://rghost.ru/42519288/image.png

Задача: переместить картинку стрелки под шкалой, в зависимости от входных данных, полученных с COM порта.

Картинки реализованы в JLabel через указание icon.
Нижний текст - JLabel с указанием проперти text.

Перемещение картинки реализуемся через
Код:


mainForm.getImageBottomArrow().setLocation( (int) calcBottomArrowX(degree), defY );
   

int defY = mainForm.getImageBottomArrow().getY();

/*
        Переводит значение градусов с компаса в значение координаты Х, в которое нужно установить картинку.
    */
    private double calcBottomArrowX(int degree) {}

Проблема: если после перемещения картинки стрелки обновить другой JLabel, например текст под шкалой через mainForm.getTextInfo().setText(str); , то после обновления дрпугого JLabel изображение стрелки возвращается в исходное положение (т.е. в центр шкалы).
"Скачки" возникают при обновлении любого другого компонента. Например изменение картинки в другом JLabel.


Перемещение картинки работает по таймеру. В результате получается, что картинка смещается, но потом снова прыгает в центр.



Гуглом пользовался. Да, информация по перемещению картинки есть, но реализация для меня не совсем понятна, поэтому просьба подсказать.
Код изначально не прилагаю, т.к. он больше похож на мусор с 100500 комментариев и с большим количеством закомментированных строк, т.к. пробую различные варианты реализации, но пока без толку.

Добавлено через 13 часов 12 минут
актуально. нужна хелпа, ибо сделать нужно в ближайшее время :(

coldy 28.12.2012 07:54

Re: GUI. Проблема с перемещением картинки
 
Путем проб и ошибок выяснилось, что "скачек" в дефолтное положение происходит после revalidate();
При этом все будет прекрасно работать, если сделать setLayout(null), но при этом, понятное дело, толку от лэаута и размещения по сетке не будет, поэтому метод топорный.

Пока единственным вариантом для смещения картинки вижу Insets.

VISTALL 28.12.2012 10:19

Re: GUI. Проблема с перемещением картинки
 
а не пробывал типо

mainForm.getImageBottomArrow().setLocation( (int) calcBottomArrowX(degree), defY );
mainForm.getImageBottomArrow().revalidate();

mainForm.getTextInfo().setText(str);
mainForm.getTextInfo().revalidate();

Ro_0TT 28.12.2012 12:54

Re: GUI. Проблема с перемещением картинки
 
Как вариант JavaFX использовать в нем и красивее получится и проще в использовании.

coldy 28.12.2012 22:27

Re: GUI. Проблема с перемещением картинки
 
Цитата:

Сообщение от Ro_0TT (Сообщение 258054)
Как вариант JavaFX использовать в нем и красивее получится и проще в использовании.

Надо будет ознакомиться. Просто сроки поджимают, поэтому не хочется все переписывать.

Цитата:

Сообщение от VISTALL (Сообщение 258034)
а не пробывал типо

mainForm.getImageBottomArrow().setLocation( (int) calcBottomArrowX(degree), defY );
mainForm.getImageBottomArrow().revalidate();

mainForm.getTextInfo().setText(str);
mainForm.getTextInfo().revalidate();

Пробовал. Картинка вернется в дефолтное положение уже после.

mainForm.getImageBottomArrow().setLocation( (int)calcBottomArrowX(degree), defY );
mainForm.getImageBottomArrow().revalidate();

по сути картинка возвращается в исходное положение после revalidate любого элемента на панели.

VISTALL 28.12.2012 23:44

Re: GUI. Проблема с перемещением картинки
 
Цитата:

Сообщение от coldy (Сообщение 258215)
Надо будет ознакомиться. Просто сроки поджимают, поэтому не хочется все переписывать.



Пробовал. Картинка вернется в дефолтное положение уже после.

mainForm.getImageBottomArrow().setLocation( (int)calcBottomArrowX(degree), defY );
mainForm.getImageBottomArrow().revalidate();

по сути картинка возвращается в исходное положение после revalidate любого элемента на панели.

стоп - вы забыли , про слои , он не даст переместится.

поюзайте JSlider вроде так

[STIGMATED] 29.12.2012 10:27

Re: GUI. Проблема с перемещением картинки
 
Цитата:

Сообщение от coldy (Сообщение 258215)
Надо будет ознакомиться. Просто сроки поджимают, поэтому не хочется все переписывать.


Отпишите по контактам в профиле, помогу с javafx, быстрее будет.


Текущее время: 18:24. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot