Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с обновлением экрана при setSize / 8 сообщений из 8, страница 1 из 1
06.12.2006, 20:45:33
    #34181624
dimchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
Подскажите кто может :)
проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того
были ли переопределены какие функции отвечающие за перерисовку
repaint()
paint()
......
все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента,
подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно,
или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое ....
...
Рейтинг: 0 / 0
06.12.2006, 21:08:29
    #34181643
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
dimchikПодскажите кто может :)
проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того
были ли переопределены какие функции отвечающие за перерисовку
repaint()
paint()
......
все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента,
подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно,
или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое ....

На уровне Object? С трудом верится...

В переопределенных методах repaint, paint или updateUI уберите вызовы super.paint() и т.п. Тогда точно не будут вызываться
...
Рейтинг: 0 / 0
06.12.2006, 21:12:48
    #34181646
dimchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
чес слово, вообще нигде нету super...
а кромя конструктора
...
Рейтинг: 0 / 0
06.12.2006, 21:14:37
    #34181648
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
dimchikчес слово, вообще нигде нету super...
а кромя конструктора

updateUI переопределили?
...
Рейтинг: 0 / 0
06.12.2006, 21:15:22
    #34181649
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
Ruslan.Isbarov dimchikчес слово, вообще нигде нету super...
а кромя конструктора

updateUI переопределили?

хотя бред... что то тут не то...
...
Рейтинг: 0 / 0
06.12.2006, 21:28:57
    #34181669
dimchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
вот проект для теста,
и если его запустить то видно как моргает именно перерисовка, а если нагрузить еще чемнибудь, то вообще заметно что от setsize приходит clearrect

class mp extends Panel
{ //вот переопределены репаинты
public void repaint() {}
public void repaint( long tm ) {}
public void repaint( int x, int y, int width, int height ) {}
public void repaint( long tm, int x, int y, int width, int height ) {}
public void paint(Graphics ga)
{ // super нету
Image im = this.createImage(getSize().width,getSize().height);
Graphics g = im.getGraphics();
g.drawRect(0,0,getSize().width-1,getSize().height-1);
g.fillRect(20,20,40,40);
g.drawString("Hello",1,10);
ga.drawImage(im,0,0,null);
}
}

class th extends Thread
{
Applet1 par;
public void run()
{
for (int a=0;a<140;a++)
{
par.m.setSize(par.m.getSize().width-1,par.m.getSize().height-1);
try {this.sleep(50);}catch(Exception ee){}
}
for (int a=0;a<140;a++)
{
par.m.setSize(par.m.getSize().width+1,par.m.getSize().height+1);
try{this.sleep(50);}catch(Exception ee){}

}
}
}
public class Applet1 extends Applet
{
mp m = new mp();
Button bt = new Button("start refresh");
public void init()
{
setLayout(null);
m.setSize(200,200);
m.setLocation(50,10);

m.setBackground(Color.yellow);
add(m);

bt.setSize(30,30);
bt.setLocation(1,1);
add(bt);
}
public boolean action(Event ev,Object ob)
{
th thh= new th();
thh.par=this;
thh.start();
return true;
}
}
...
Рейтинг: 0 / 0
07.12.2006, 18:42:59
    #34184398
leafox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
А ты так напиши:

private boolean refresh = true;

public void setSize( int x, int y, boolean refresh )
{
this.refresh = refresh;
super.setSize( x, y );
}

public void paint( Graphics g )
{
if( !refresh )
{
refresh = true;
return;
}
// Дальше все остальное
}
Примерно таким образом можно устанавливать размер с рефрешем или без по желанию
...
Рейтинг: 0 / 0
07.12.2006, 19:17:59
    #34184460
dimchik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с обновлением экрана при setSize
весь код в paint у меня введен только для того что бы проще было видеть что моргает ....
а проблема глубже закапана, сама super.setSize() вызывает системный рефрешь, а уже после этого уже вызывается paint так что, что бы мы не делали в паинте, clearRect вызывается и без него ....
и потом если делаем setBackground() .... цвет фона все равно рисуется даже если паинт задизейблить
вот енто рисование фона мне кажется и моргает, вот его бы и перехватить ....
может кто знает как енто сделать?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с обновлением экрана при setSize / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]