PDA

View Full Version : [Java] Duplicazione del segnale video in un JPanel


valerio65
30-09-2012, 14:35
Ciao raga! Ho scritto questo piccolo codice che mi dovrebbe duplicare il segnale video del mio pc in un JPanel:

import java.awt.*;
import javax.swing.*;

class Provadef {
public static void main (String args[]){
JFrame f = new JFrame ();
JPanel p = new JPanel ();
Robot robot = null;
/*try {
robot = new Robot ();
}
catch (Exception e){
System.out.println("Errore");
}*/
Graphics g = p.getGraphics();
f.setLayout(null);
f.getContentPane().add(p);
p.setBounds(0, 0, 500, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(true);
f.setLocation(600, 0);
f.setSize(500, 500);
f.setVisible(true);
while (true){
try {
robot = new Robot ();
Thread.sleep(20);
}
catch (Exception ex){
System.out.println("Errore");
}
g.drawImage(robot.createScreenCapture(new Rectangle(500,500)), 0, 0, null);
}
}
}

L'oggetto robot mi permette di prendere uno screenshot della mia videata, e prendendo l'oggetto Graphics associato al JPanel dovrebbe disegnarmelo su di esso, tutto a 50 fps! Ma al runtime mi da quest'errore:

Exception in thread "main" java.lang.NullPointerException
at Provadef.main(Provadef.java:32)

ovvero mi da eccezione di puntatore nullo sulla riga 32, dove c'č il richiamo al metodo drawImage!
Non riesco a capire dove sbaglio, ho rispettato tutti i parametri del costruttore! :(

EDIT ho risolto semplicemente mettendo la riga di getGraphics all'interno del ciclo... qualcuno puņ spiegarmi meglio questa classe Graphics? Nella documentazione non ho capito molto...