Hallo zusammen,
ich steck bei der Programmierung einer Anwendung zur Steuerung meiner selbstgebauten Wärmebildkamera fest und bräuchte eure Hilfe.
Bei Programmstart wird ein JFrame mit der LiveVorschau einer Webcam angezeigt, darunter befindet sich ein Capture-Button der bei Aufruf das gerade angezeigte Webcambild extern abspeichert und dann eine neue Methode namens ProgressBar aufruft (die stellt den Status der aktuellen Temperaturvermessung dar).
Jetzt wird in dieser Methode ProgressBar der JFrame verändert, und unter anderem auch der Capture Button entfernt, durch den die Methode selber aber aufgerufen wurde. Logischerweise geht das nicht, da der Button ja immer noch gedrückt ist und somit nicht vom JPanel entfernt werden kann. Nun meine Frage: Kann ich die ProgressBar Methode irgendwie anders aufrufen oder lässt sich der Button währrend seiner actionPerformed-Laufzeit destroyen ?
Hier mal die Methode progressBar in der der Button, das imgpanel und die für die Implementierung der Webcam nötige Variable comp entfernt und durch die Statusbar ersetzt werden soll (die for Schleife ist momentan nur ein Platzhalter zum testen, da kommt dann später die Serialübertragung rein)
Und hier die ActionPerformed vom Capture Button:
Danke für eure Hilfe !
ich steck bei der Programmierung einer Anwendung zur Steuerung meiner selbstgebauten Wärmebildkamera fest und bräuchte eure Hilfe.
Bei Programmstart wird ein JFrame mit der LiveVorschau einer Webcam angezeigt, darunter befindet sich ein Capture-Button der bei Aufruf das gerade angezeigte Webcambild extern abspeichert und dann eine neue Methode namens ProgressBar aufruft (die stellt den Status der aktuellen Temperaturvermessung dar).
Jetzt wird in dieser Methode ProgressBar der JFrame verändert, und unter anderem auch der Capture Button entfernt, durch den die Methode selber aber aufgerufen wurde. Logischerweise geht das nicht, da der Button ja immer noch gedrückt ist und somit nicht vom JPanel entfernt werden kann. Nun meine Frage: Kann ich die ProgressBar Methode irgendwie anders aufrufen oder lässt sich der Button währrend seiner actionPerformed-Laufzeit destroyen ?
Hier mal die Methode progressBar in der der Button, das imgpanel und die für die Implementierung der Webcam nötige Variable comp entfernt und durch die Statusbar ersetzt werden soll (die for Schleife ist momentan nur ein Platzhalter zum testen, da kommt dann später die Serialübertragung rein)
Java:
public void Progressbar(){
setVisible(false);
current = new JProgressBar(0, 100);
current.setValue(0);
panel.remove(button);
panel.remove(imgpanel);
panel.remove(comp);
panel.add(current);
current.setStringPainted(true);
setSize(200, 100);
setTitle("Status..");
setVisible(true);
try {
Thread.sleep(1000);
for(int i=0;i<101;i++){
Thread.sleep(100);
current.setValue(i);
}
} catch (Exception ex) {
System.out.println("Exception : " + ex.getMessage());
}
this.setVisible(false);
this.dispose();
System.exit(0);
}
Und hier die ActionPerformed vom Capture Button:
Java:
public void actionPerformed(ActionEvent e) {
// Grab a frame
FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
buf = fgc.grabFrame();
// Convert it to an image
btoi = new
BufferToImage((VideoFormat)buf.getFormat());
img = btoi.createImage(buf);
// save image
saveJPG(img,"c:\\test.jpg");
// close
playerclose();
//call ProgressBar
ProgressBar();
}
Danke für eure Hilfe !