В настоящее время я работаю над групповым проектом для курса колледжа, и я столкнулся с небольшим камнем преткновения. Программа, которую мы решили реализовать, представляет собой одноранговый чат-клиент с центральным сервером для хранения и совместного использования имен пользователей и т. Д. Я был назначен для работы с графическим интерфейсом.
Друг в шутку предложил мне включить "пылающий фон!" Поэтому я решил сделать именно это, но иметь выбранное пользователем фоновое изображение. Таким образом, только фрагменты фонового изображения будут видны со всеми компонентами поверх него, поэтому я решил попытаться реализовать прозрачность.
Вот где моя проблема:
При отправке информации из поля ввода в окно чата, навигации по списку друзей или прокрутке окна чата остаются странные артефакты. Эти артефакты иногда являются полупрозрачными «призраками» кнопки «Отправить», иногда частью меню или старого текста. Мне кажется, что весь кадр не перерисовывается должным образом, но я не уверен, как это работает.
Для компонентов, которые реализуют JTextComponent, я устанавливаю их цвет выделения полупрозрачным. Для других компонентов я устанавливаю прозрачный фон. У меня есть функция setTranslucency (Component com), которая смотрит на компонент, устанавливает его прозрачность в зависимости от того, что это такое, затем видит, является ли он каким-либо контейнером, и рекурсивно устанавливает прозрачность каждого элемента.
Теперь способ, который я нашел, чтобы решить эту проблему, это перетянуть окно из поля зрения (например, свернуть или перетащить окно за пределы экрана и обратно).
Итак,
1) Есть ли способ заставить все окно обновляться так, как оно происходит, когда я перетаскиваю его за пределы экрана или минимизирую его?
или
2) Я делаю это неправильно в первую очередь? Если да, то как бы это исправить?
Вот изображение для справки:
http://i.stack.imgur.com/4J9GJ.png