Hiirenkuuntelijan eri hiiri-eventeille (mouseClicked, mousePressed, mouseMoved ...) ilmoittamat koordinaatit pitävät sisällään käyttöjärjestelmän ikkunamanagerin ikkunoille tekemien reunojen koon. Tämä on varsin ikävää, sillä ei voida etukäteen tietää, mikä ikkunointijärjestelmä käyttäjällä on käytössä, eikä kaikkiin mahdollisuuksiin voida varautua. Itse kohtasin tämän ongelman käyttäessäni XFCE-työpöytää.
Hiirenkuuntelijan eri hiiri-eventeille (mouseClicked, mousePressed, mouseMoved ...) ilmoittamat koordinaatit pitävät sisällään käyttöjärjestelmän ikkunamanagerin ikkunoille tekemien reunojen koon. Tämä on varsin ikävää, sillä ei voida etukäteen tietää, mikä ikkunointijärjestelmä käyttäjällä on käytössä, eikä kaikkiin mahdollisuuksiin voida varautua. Itse kohtasin tämän ongelman käyttäessäni XFCE-työpöytää.
Ongelman toistaminen:
lisäämällä mouseMoved -metodiin rivi
ja käynnistämällä sovellus ja liikuttamalla hiiri vasempaan yläkulmaan saatiin tulostus
Hiiri (3, 30)
Ongelma ratkeaa, jos GraafinenKayttoliittyma-luokassa lisaaKuuntelijat -metodissa annetaan hiiren kuuntelijat framen sijaan piirtoalustalle:
Nyt hiiren vieminen vasempaan yläkulmaan aiheuttaa likimain tulostuksen:
Hiiri (0, 0)
Nyt OS-luokka voidaan poistaa käytöstä ja huomataan kuinka graafisen käyttöliittymän elementit reagoivat hiireen sen ollessa niiden yläpuolella.