Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компонент поверх компонента 
:(
    Опции темы
Keyo
Дата 16.10.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



Вот тут есть похожая тема
http://forum.vingrad.ru/forum/topic-232422.html
Но у меня проблема в том что если один компонент, с альфа бэкграундом, полностью перекрывает другой, то тот другой вовсе не прорисовывается, однако если верхний компонент не перекрывает хотя бы полоску в 1px, то нижний отрисовывается. Собственно вопрос - как можно заставить нижний компонент прорисовываться, даже если он перекрыт полностью?
PM MAIL   Вверх
dorogoyIV
Дата 17.10.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Код

 public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  ...
  ...
 }

PM MAIL   Вверх
Keyo
Дата 17.10.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



В конце концов сделал так...
У компонента 

Код

setOpaque(false);

//+ к этому
setBackground(new Color(200,200,200,200));

//далее переопределить 

@Override
public void paint(Graphics g) {
    try {
      g.setColor(getBackground());
      g.fillRect(0,0, getWidth(), getHeight());


   } finally {

     g.dispose();
  }
}



Почему-то сразу не догадался что главное setOpaque(false); иначе все равно компонент находящийся под данным, прорисовываться не будет.
PM MAIL   Вверх
dorogoyIV
Дата 17.10.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



я немного не догоняю - для чего блок try{...}... в методе paint(...

PM MAIL   Вверх
Keyo
Дата 17.10.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



dorogoyIV, 
g.dispose(); Высвобождает ресурсы... так? В случае если не будет блока try finally и если произойдет исключение, то соответственно dispose не выполнится, в том случае конечно если исключение не было перехвачено в методе. Поэтому try/finally гарантирует что dispose() выполнится
PM MAIL   Вверх
dorogoyIV
Дата 18.10.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



ок.
это я недовысказал свою мысль - по моему убеждению - в методе paint/paintComponent должна происходить только перерисовка, и ничего более.
если нужно ловить Exception, то лови его в каком нибудь другом методе...
хотя ошибки в твоем коде вроде нет  smile 
PM MAIL   Вверх
Keyo
Дата 18.10.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



dorogoyIV, дык я не ловлю там эксепшн   smile 
try/finally гарантирует что выполнится метод dispose() объекта типа Graphics в свою очередь это как-то гарантирует высвобождение ресурсов, что по идее делает dispose(), хотя конечно это не обязательно, по скольку автоматический сборщик мусора... Но в то же время всем известно что он работает не совсем предсказуемо... поэтому и...  smile  вот
PM MAIL   Вверх
dorogoyIV
Дата 18.10.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



я все же думаю, что это лишнее.
ну в общем суть не меняется
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.