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?
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?
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)
Dipende da come vuoi che avvenga la "gestualità" con il 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?
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
giusto nn avevo pensato al focus.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.
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??
In ogni caso non è possibile "catturare" quello che ci potrebbe essere "sotto" la finestra della applicazione.Originariamente inviato da fermat
fare in modo che la finestra del programma nn rientri nello screenshot.
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.Originariamente inviato da fermat
-quando inizio a trscinare il mouse la finestra del programma perde il focus
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
eh lo so anche se sarebbe bello poter fare una cosa del genereOriginariamente inviato da andbin
In ogni caso non è possibile "catturare" quello che ci potrebbe essere "sotto" la finestra della applicazione.![]()
quindi l'unica possibilità è tenere il focus del programma??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.
Usando solo API Java standard, sì.Originariamente inviato da fermat
quindi l'unica possibilità è tenere il focus del programma??
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
anche questo mi piacerebbe.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.
ho pensato di fare così:
-se nella finestra principale è selezionato il radiobutton per la selezione col mouse richiamo questa class:
questo salva l'immagine in una directory e richiama il frame dove devo fare la selezionecodice: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); } }
-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.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??
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
un passo alla volta che mi perdo.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.
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??:
andrebbe??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); }