Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
GUI. Проблема с перемещением картинки
#1
Занялся написанием программы с GUI впервые, поэтому возникла проблема. Просьба наставить на путь истинный или помочь советом, ибо застрял.

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

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

[Изображение: 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 минут
актуально. нужна хелпа, ибо сделать нужно в ближайшее время Sad
Ответ
#2
Путем проб и ошибок выяснилось, что "скачек" в дефолтное положение происходит после revalidate();
При этом все будет прекрасно работать, если сделать setLayout(null), но при этом, понятное дело, толку от лэаута и размещения по сетке не будет, поэтому метод топорный.

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

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

mainForm.getTextInfo().setText(str);
mainForm.getTextInfo().revalidate();
consulo.io - Consulo - multi-language IDE
Ответ
#4
Как вариант JavaFX использовать в нем и красивее получится и проще в использовании.
Ответ
#5
Ro_0TT Написал:Как вариант JavaFX использовать в нем и красивее получится и проще в использовании.

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

VISTALL Написал:а не пробывал типо

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 любого элемента на панели.
Ответ
#6
coldy Написал:Надо будет ознакомиться. Просто сроки поджимают, поэтому не хочется все переписывать.



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

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

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

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

поюзайте JSlider вроде так
consulo.io - Consulo - multi-language IDE
Ответ
#7
coldy Написал:Надо будет ознакомиться. Просто сроки поджимают, поэтому не хочется все переписывать.


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


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Проблема с выбором БД(L2JFrozen) Gawric 2 3,308 12-13-2015, 05:20 PM
Последний пост: Gawric
  Начал Читать Книгу по Java возникла проблема Fant1K 12 3,602 03-17-2012, 05:55 AM
Последний пост: Fant1K

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)