gpt4 book ai didi

java - 监听器在 Swing 应用程序中无法正常工作

转载 作者:行者123 更新时间:2023-12-01 12:08:20 27 4
gpt4 key购买 nike

我有以下示例类,它使用 uk.co.mmscomputing.device.scanner.Scanner 类连接到 twain.dll 驱动程序来扫描页面:

public class ScannerManager implements ScannerListener{

static ScannerManager app;

Scanner scanner;
String fileName;

public ScannerManager() 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("ACQUIRED!");
String file = UIMessages.showInputMessage("Enter file name");
try{
ImageIO.write(image, "png", new File(Constants.getPathBusta() + File.separatorChar + file));
fileName = Constants.getPathBusta() + File.separatorChar + file;

}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 ScannerManager( );
}catch(Exception e){
e.printStackTrace();
}
}

}

在运行主方法时它工作得很好,但是我需要从 Swing jButton 点击事件中调用它:令人惊讶的是,它的工作原理并不相同:

buttonAcquire.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {

ScannerManager scanner = new ScannerManager();

} catch (ScannerIOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
defaultCursor();
}

}
});

条件:

  if(type.equals(ScannerIOMetadata.ACQUIRED))

从未满足,因此从 Swing 线程执行时事件似乎没有被正确拦截。你能给我任何提示吗?我真的很困惑,我不知道可能是什么问题......

最佳答案

尝试让 Swing 类本身监听 ScannerListener 事件。换句话说,将代码移动到 Swing UI 部分并查看它是否有效。

关于java - 监听器在 Swing 应用程序中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27418446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com