Jacob Nordfalk <nordfalk@mobilixnet.dk> wrote
> "Peter T. Nielsen" wrote:
>
>> Hej!
>>
>> Jeg har lavet mit eget panel som extends JPanel. På det panel tegner
>> jeg bl.a. et koordinatsystem vha. paint-metoden og Graphics2D. Panelet
>> ligger jeg så på/i en JScrollPane og scrollbarerne kommer fint frem.
>> Problemet er at når jeg bruger scrollbarerne bliver
>> koordinatsystemet(og andet der bliver tegnet på det panel) tegnet
>> fuldstændigt underligt igen. Dvs. som om man har skubbet og tværet det
>> tegnede.
>
> Prøv at lægge din tegning i paintComponents() i stedet for paint()
> (så får du også automatisk dobbelt buffering i komponenten, hvis
> det er slået til)
>
Jeg prøvede at lave min paint metode om til paintComponents(), men det
hjælp ikke på problemet.
> Kalder du selv paint() eller kalder du repaint() og lader systemet om
> at kalder paint()?
> Det første går ikke altid godt hvis det det ikke er GUI-tråden
> der gør det (hvis du bruger flere tråde i dit program)
I forbindelse med scrollbaren kalder jeg hverken paint eller repaint! Det
skulle scrollbaren da gerne selv klare?!
>
>
>> Et andet sted i framen har jeg en knap som bl.a. gentegner hele
>> JFramen og så står alt i JScrollPane som det skal!
>>
>> Jeg tænkte så at jeg kunne finde en event der blev triggert når der
>> blev scrollet og så gentegne hele framen, men jeg kan ikke finde en
>> sådan.
>
> Prøv at lytte efter Adjustment-hændelser på hver af scrollbarerne:
> getVerticalScrollBar().addAdjustmentListener()
>
Her fik jeg succes
Jeg har lavet en event der simpelthent tegner hele
framen igen vha. et repaint() kald. Køn kode er det ikke, men det virker!
scrollPane.getHorizontalScrollBar().addAdjustmentListener(
new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent ae) {
repaint();
}
});
Tak for hjælpen
/Peter