Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ho bisogno di aiuto con la classe Robot!

    Ciao a tutti,
    sto scrivendo un programma che, avendo una JWindow colorata con diversi colori, quando clicco su di essa mi stampa il colore del pixel sul quale ho premuto col mouse...
    Per fare ciò ho utilizzato la classe Robot((new Robot()).getPixelColor(x,y)), ma dato che non sapevo della sua esistenza fino a ieri e nessuno mi ha insegnato come si usa, ho avuto un piccolo problema:
    Quando clicco col mouse su parti della finestra colorate nello stesso modo mi da codici RGB diversi, per esempio se ho 3 JPanel sparsi per la JWindow dello stesso colore, il codice RGB stampato non è mai lo stesso... Il mio dubbio è questo: è possibile che quando viene eseguita l'istruzione
    codice:
    Color c = r.getPixelColor(x,y);//r=Robot
    il colore che salta fuori si riferisce a quello che c'è dietro la JWindow(il Desktop)... E' possibile? Se sì,come faccio ad evitare che ciò accada?
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ho bisogno di aiuto con la classe Robot!

    Originariamente inviato da Harlandraka_94
    è possibile che quando viene eseguita l'istruzione
    codice:
    Color c = r.getPixelColor(x,y);//r=Robot
    il colore che salta fuori si riferisce a quello che c'è dietro la JWindow(il Desktop)... E' possibile?
    No, è proprio "quello che c'è nel punto sul video".

    Semmai la questione è un'altra: cosa passi come x/y? Quando ricevi un MouseEvent il punto del mouse lo si può rappresentare in vari modi: relativo al componente, relativo allo schermo intero o magari anche alla finestra top-level che contiene il componente. Chiaramente ti servono le coordinate sullo schermo!

    Se puoi usare Java 6 in MouseEvent ci sono getLocationOnScreen/getXOnScreen/getYOnScreen. Altrimenti ti può dare solo x/y relativi al componente.

    In alternativa vedi il convertPointToScreen di javax.swing.SwingUtilities
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Ho bisogno di aiuto con la classe Robot!

    Originariamente inviato da andbin
    No, è proprio "quello che c'è nel punto sul video".

    Semmai la questione è un'altra: cosa passi come x/y? Quando ricevi un MouseEvent il punto del mouse lo si può rappresentare in vari modi: relativo al componente, relativo allo schermo intero o magari anche alla finestra top-level che contiene il componente. Chiaramente ti servono le coordinate sullo schermo!

    Se puoi usare Java 6 in MouseEvent ci sono getLocationOnScreen/getXOnScreen/getYOnScreen. Altrimenti ti può dare solo x/y relativi al componente.

    In alternativa vedi il convertPointToScreen di javax.swing.SwingUtilities
    no, io usavo semplicemente x=e.getX() e y=e.getY()... ora proverò a seguire il tuo consiglio.. grazie!!
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Ho bisogno di aiuto con la classe Robot!

    Originariamente inviato da Harlandraka_94
    usavo semplicemente x=e.getX() e y=e.getY()...
    No infatti. Dal javadoc: Returns the horizontal x position of the event relative to the source component.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.