Kirjoittaja Aihe: Java pakotettu paint()-metodin kutsu *RATKAISTU*  (Luettu 2471 kertaa)

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Elikkäs miten saan pakotettua paint() metodin kutsun, niin että saan säikeistetyn ohjelman päivittämään ruudun (JDialog) sisällön sopivin väliajoin.

Teen siis kopiointi-ikkunaa jonka pitäisi päivittää progress-baria sopivin väliajoin, tällä hetkellä tapahtuu seuraavaa:

1) Avaan ko. dialogin, joka käynnistää kopiointi-säikeen
2) kopiointisäie kutsuu joka tiedoston kopioinnin jälkeen JDialogini setProgressPercentage(int percentage) -metodia antaen arvon väliltä 0 - 100
3) setProgressPercentage() -metodi kutsuu repaint()-metodia, paint(Graphics g) vastaavasti piirtää progress-barin ruutuun.

ongelma on, että ruutu päivittyy vain alussa ja seuraavan kerran vasta kun kopiointi on valmis. Paint-metodi kyllä huutaa debugit ulos komentoriville kiltisti, mutta tosiaan tuo ruutu ei päivity... olen jopa kokeillut pakottaa tuota ruudun päivittämistä seuraavasti:

Koodia: [Valitse]
if(this.getGraphics() != null)
this.paint(this.getGraphics());

Tämäkään ei muuta tilannetta. Googlesta olen kaivellut tietoa sekä säikeistä että repaint() -metodin pakottamisesta - tuloksetta...

Ja ei, en voi käyttää valmiita gui-palikoita, koska sovelluksesta tulee erittäin "skinitetty"...

-edit-
Kokeilin tosiaan myös kaksoispuskuroida tuon piirron. Omituisinta tuossa on se, ettei ikkunan sisältö päivity oikein vaikka pyöräytän jotain toista ikkunaa tuon ikkunan päällä, jolloin paint-metodin luulisi välittävän piirtokäskyt loppuun asti?!?

-edit2-
Jep, niinhän se menee, että kun debugataan, kannattanee debugata oikeita asioita (esim miten kokonaislukujen jakolasku pyöristyy jne) eli piirto toimi oikein, prosenttilaskut meni mönkään... Perjantaipäivät pitäisi muuttaa arkipyhiksi tai ainakin palkallisiksi vapaapäiviksi... :D
« Viimeksi muokattu: 20.04.07 - klo:15.38 kirjoittanut Jantunen »
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/