Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [Java] Catturare area selezionata col mouse

    mi stavo facendo un programmino per catturare lo schermo ed ho pensato di aggiungere come funzionalità quella di selezionare l'area col mouse.
    cose mi servirebbe di preciso per salavre le coordinate selezionte col mouse?

  2. #2
    Leggi le coordinate al momento della pressione del tasto del mouse e quelle al momento del rilascio ed hai le coordinate e la dimensione della finestra selezionata.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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

    Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da fermat
    mi stavo facendo un programmino per catturare lo schermo ed ho pensato di aggiungere come funzionalità quella di selezionare l'area col mouse.
    cose mi servirebbe di preciso per salavre le coordinate selezionte col mouse?
    Dipende da come vuoi che avvenga la "gestualità" con il mouse.
    Se la applicazione Java non "perde" il focus, puoi benissimo fare in modo che l'utente metta il mouse su un punto, poi premendo un tasto della tastiera puoi leggere la posizione del mouse (anche se fuori dalla finestra della applicazione) con la classe java.awt.MouseInfo ma solo da Java 5.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4

    Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da andbin
    Dipende da come vuoi che avvenga la "gestualità" con il mouse.
    Se la applicazione Java non "perde" il focus, puoi benissimo fare in modo che l'utente metta il mouse su un punto, poi premendo un tasto della tastiera puoi leggere la posizione del mouse (anche se fuori dalla finestra della applicazione) con la classe java.awt.MouseInfo ma solo da Java 5.
    giusto nn avevo pensato al focus.
    diciamo che la cosa migliore sarebbe fare in modo che la finestra del programma nn rientri nello screenshot.
    quindi qualcosa del genere:
    -seleziono le opzioni che mi interessano
    -quando inizio a trscinare il mouse la finestra del programma perde il focus
    -quando rilascio salvo l'immagine (o richiamo un filechooser per decidere dove salvare)
    sarebbe possibile??

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

    Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da fermat
    fare in modo che la finestra del programma nn rientri nello screenshot.
    In ogni caso non è possibile "catturare" quello che ci potrebbe essere "sotto" la finestra della applicazione.

    Originariamente inviato da fermat
    -quando inizio a trscinare il mouse la finestra del programma perde il focus
    Se clicchi al di fuori della finestra della applicazione, essa perde il focus. Non puoi ricevere notifica di questo click e non potresti tracciare nulla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6

    Re: Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da andbin
    In ogni caso non è possibile "catturare" quello che ci potrebbe essere "sotto" la finestra della applicazione.
    eh lo so anche se sarebbe bello poter fare una cosa del genere

    Se clicchi al di fuori della finestra della applicazione, essa perde il focus. Non puoi ricevere notifica di questo click e non potresti tracciare nulla.
    quindi l'unica possibilità è tenere il focus del programma??

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

    Re: Re: Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da fermat
    quindi l'unica possibilità è tenere il focus del programma??
    Usando solo API Java standard, sì.

    Ah, nota: nessuno però ti vieterebbe di fare lo screenshot dell'intero schermo, poi mostrare la immagine su un pannello o altro e permettere all'utente di "tracciare" in qualche modo l'area di suo interesse. Questo, sì, sarebbe perfettamente possibile in Java standard.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8

    Re: Re: Re: Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da andbin
    Ah, nota: nessuno però ti vieterebbe di fare lo screenshot dell'intero schermo, poi mostrare la immagine su un pannello o altro e permettere all'utente di "tracciare" in qualche modo l'area di suo interesse. Questo, sì, sarebbe perfettamente possibile in Java standard.
    anche questo mi piacerebbe.
    ho pensato di fare così:
    -se nella finestra principale è selezionato il radiobutton per la selezione col mouse richiamo questa class:
    codice:
    public class ScreenMouse {
    
        private static FrameCapture frame;
    
        public static void mouseScreen(String formato, String percorso)
                throws AWTException, IOException {
            Robot robot = new Robot();
            Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            BufferedImage buff = robot.createScreenCapture(area);
            ImageIO.write(buff, formato, new File(percorso));
            frame = new FrameCapture();
            frame.setVisible(true);
        }
    }
    questo salva l'immagine in una directory e richiama il frame dove devo fare la selezione
    -a questo punto come richiamo l'immagine nel JPanel di quel JFrame??
    come background (che però mi pare accetti solo colori) o in altro modo??

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

    Re: Re: Re: Re: Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da fermat
    questo salva l'immagine in una directory e richiama il frame dove devo fare la selezione
    -a questo punto come richiamo l'immagine nel JPanel di quel JFrame??
    come background (che però mi pare accetti solo colori) o in altro modo??
    Primo: non è necessario salvare la immagine su file se vuoi innanzitutto mostrarla all'utente e permettergli di selezionare una area.
    Secondo: un Image(/BufferedImage) potresti teoricamente metterlo in un ImageIcon e visualizzarlo in JLabel ma sarebbe poi scomodo (e poco pulito) gestire gli eventi del mouse lì sopra.
    Meglio se estendi JPanel e disegni/gestisci tu immagine e selezione area con del codice appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10

    Re: Re: Re: Re: Re: Re: Re: Re: [Java] Catturare area selezionata col mouse

    Originariamente inviato da andbin
    Primo: non è necessario salvare la immagine su file se vuoi innanzitutto mostrarla all'utente e permettergli di selezionare una area.
    Secondo: un Image(/BufferedImage) potresti teoricamente metterlo in un ImageIcon e visualizzarlo in JLabel ma sarebbe poi scomodo (e poco pulito) gestire gli eventi del mouse lì sopra.
    Meglio se estendi JPanel e disegni/gestisci tu immagine e selezione area con del codice appropriato.
    un passo alla volta che mi perdo.

    al click sul bottone a questo punto potrei lanciare direttamente un altro fram col panel in questione che ha al suo interno un evento WindowOpened dove all'interno leggo dal BufferedReader e disegno l'immagine sul Jpanel.
    qualcosa del genere??:
    codice:
        private void formWindowOpened(java.awt.event.WindowEvent evt) {
            try {
                Robot robot = new Robot();
                Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
                BufferedImage buff = robot.createScreenCapture(area);
            } catch (AWTException ex) {
                JOptionPane.showMessageDialog(this, ex.getMessage());
            }
        }
    ....
        @Override
        public void paintComponent(Graphics g) {
            g.drawImage(buff, 0, 0, null);
        }
    andrebbe??

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.