powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с обновлением экрана при setSize
8 сообщений из 8, страница 1 из 1
проблема с обновлением экрана при setSize
    #34181624
dimchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите кто может :)
проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того
были ли переопределены какие функции отвечающие за перерисовку
repaint()
paint()
......
все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента,
подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно,
или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое ....
...
Рейтинг: 0 / 0
проблема с обновлением экрана при setSize
    #34181643
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimchikПодскажите кто может :)
проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того
были ли переопределены какие функции отвечающие за перерисовку
repaint()
paint()
......
все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента,
подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно,
или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое ....

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

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

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

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

хотя бред... что то тут не то...
...
Рейтинг: 0 / 0
проблема с обновлением экрана при setSize
    #34181669
dimchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот проект для теста,
и если его запустить то видно как моргает именно перерисовка, а если нагрузить еще чемнибудь, то вообще заметно что от 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
проблема с обновлением экрана при setSize
    #34184398
leafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ты так напиши:

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
проблема с обновлением экрана при setSize
    #34184460
dimchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
весь код в paint у меня введен только для того что бы проще было видеть что моргает ....
а проблема глубже закапана, сама super.setSize() вызывает системный рефрешь, а уже после этого уже вызывается paint так что, что бы мы не делали в паинте, clearRect вызывается и без него ....
и потом если делаем setBackground() .... цвет фона все равно рисуется даже если паинт задизейблить
вот енто рисование фона мне кажется и моргает, вот его бы и перехватить ....
может кто знает как енто сделать?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с обновлением экрана при setSize
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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