【发布时间】:2015-05-02 13:43:48
【问题描述】:
我实现了一个小程序来从扫描仪获取图像,因为我使用了 twain 实现。当我将应用程序作为 java 小程序运行时它工作正常,但问题是它无法从扫描设备获取图像,而我从一个 html 文件运行。它没有给出任何错误,我无法调试应用程序。 任何人都可以告诉我如何解决这个问题。
这是我的html
<html>
<head><title>Scann</title></head>
<body>
<center>
<applet id="TwainApplet"
code = "com.nic.applet.TwainExample.class"
archive="TwainApplet.jar"
width="200"
height="60">
</applet>
</center>
</body>
</html>
下面是我的吐温课..
public class TwainExample extends Applet implements ScannerListener{
static TwainExample app;
Scanner scanner;
public TwainExample(String[] argv)throws ScannerIOException{
scanner=Scanner.getDevice();
scanner.addListener(this);
scanner.acquire();
}
public void update(ScannerIOMetadata.Type type, ScannerIOMetadata metadata){
if(type.equals(ScannerIOMetadata.ACQUIRED)){
BufferedImage image=metadata.getImage();
System.out.println("Have an image now!");
try{
ImageIO.write(image, "png", new File("mmsc_image.png"));
}catch(Exception e){
e.printStackTrace();
}
}else if(type.equals(ScannerIOMetadata.NEGOTIATE)){
ScannerDevice device=metadata.getDevice();
try{
// device.setShowUserInterface(true);
// device.setShowProgressBar(true);
// device.setResolution(100);
}catch(Exception e){
e.printStackTrace();
}
}else if(type.equals(ScannerIOMetadata.STATECHANGE)){
System.err.println(metadata.getStateStr());
if(metadata.isFinished()){
System.exit(0);
}
}else if(type.equals(ScannerIOMetadata.EXCEPTION)){
metadata.getException().printStackTrace();
}
}
public static void main(String[] argv){
try{
app=new TwainExample(argv);
}catch(Exception e){
e.printStackTrace();
}
}
}
【问题讨论】:
-
小程序使用
init()作为入口点。你实现了吗? -
是的,当我使用 init 时,我也尝试过使用 init 和 main 方法,但控件本身并没有进入 init 方法。我只在 init() 方法中编写 image.auquire() 方法。
-
这是我的初始化方法
-
public void init() { try { Scanner 扫描仪 = Scanner.getDevice(); System.out.println("扫描仪:"+扫描仪);扫描仪.addListener(this);扫描仪.acquire(); } 捕捉(异常 e){ e.printStackTrace(); } }
-
小程序中
init()方法的用法请参考本教程:docs.oracle.com/javase/tutorial/deployment/applet/subclass.html