1 pièce(s) jointe(s)
[Java TWAIN] blocage de l'interface SWING
Bonjour,
Non il ne s'agit pas là d'un autre topic sur "comment on fait pour scanner avec java" (car ça je sais faire...8-))
Le problème est ailleurs:
J'ai une certaine classe "Gui" qui se charge d'afficher une Interface graphique.
Lorsque j'appuie sur un certain bouton "Scanner", je crée un objet "Scan" dont voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| public class Scan implements ScannerListener{
int index = 0;
String filename;
Scanner scanner;
public Scan(){
filename=System.getProperty("user.dir")+"\\";
scanner=Scanner.getDevice();
scanner.addListener(this);
try {
scanner.acquire();
} catch (ScannerIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){
// TODO Auto-generated method stub
if(type.equals(ScannerIOMetadata.ACQUIRED)){
final BufferedImage image=metadata.getImage();
System.out.println("Have an image now!");
try{
ImageIO.write(image, "jpg", new File(filename+"scan.jpg"));
File r =new File(filename+".jpg");
r.deleteOnExit();
m.fenetre.lastScanned(index);
index++;
// new uk.co.mmscomputing.concurrent.Semaphore(0,true).tryAcquire(2000,null);
}catch(Exception e){
e.printStackTrace();
}
}else if(type.equals(ScannerIOMetadata.NEGOTIATE)){
ScannerDevice device=metadata.getDevice();try {
device.setShowUserInterface(true);
} catch (ScannerIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
try{
device.setShowProgressBar(true);
device.setRegionOfInterest(0,0,210.0,300.0);
device.setResolution(100);
}catch(Exception e){
e.printStackTrace();
}
*/
}else if(type.equals(ScannerIOMetadata.STATECHANGE)){
System.err.println(metadata.getStateStr());
}else if(type.equals(ScannerIOMetadata.EXCEPTION)){
metadata.getException().printStackTrace();
}
}
} |
En fait, il s'agit ni plus ni moins que d'un copier-coller arrangé du code-sample fourni sur le site de mmscomputing...
Donc un clic sur le bouton "Scanner" crée cet objet "Scan" et lance la fenêtre de gestion du scanner. Cette fenêtre ne fait pas partie de mon programme (en fait elle varie selon les machines), je pense qu'elle dépend du pilote ou des logiciels accompagnant le scanner. J'ai mis une capture de la dite fenêtre en pj.
Tout fonctionne bien, sauf si je clique sur "annuler" (dans la fenêtre de gestion du scanner).
En effet, je ne sais pas comment récupérer cet événement dans mon programme JAVA.
Je vous remercie d'avance.
PS:Je travaille sous Eclipse.