如何在Java Swing应用程序中显示验证码

5
我需要在Java Swing应用程序中添加验证码验证器。我已经搜索了一些库(JCaptcha和SimpleCatcha),但它们是为Web开发准备的。
有没有适用于Swing的验证码库?如果没有,是否有一个网页或仓库有一些验证码字符可以实现自己的验证码?
非常感谢您的时间和帮助。
提前致谢。

4
好问题 - 我在这里找到了另一个类似的问题,其中答案提到了 jCaptcha:https://dev59.com/questions/a1fUa4cB1Zd3GeqPL9kU -- 请问,在 Swing 应用程序中使用验证码的目的是什么? - ametren
1
如果Swing应用程序是Web应用程序的前端,我不明白为什么使用CAPTCHA与在浏览器中使用一样有用。 - JB Nizet
@JBNizet 是的,我有点能理解,但这似乎对我提出了更多问题——比如,为什么要用 swing 应用程序来前端一个 web 应用程序?我并不是想说服提问者放弃这个想法,只是想理解使用情况。 - ametren
感谢您的回答,我正在使用Java Swing实现一个登录窗口以登录到我的系统。我希望使用验证码来防止对我的服务器系统进行多个连接。 - Hermandroid
2个回答

4

JCaptcha可以返回一个BufferedImage图片。然后使用JLabel将其显示出来并不难:

BufferedImage captcha = // Get the captcha
// See also com.octo.captcha.service.image.AbstractManageableImageCaptchaService.getImageChallengeForID(String)
JLabel label = new JLabel(new ImageIcon(captcha));
// ... add that label to a visible container of your Swing application

在版本1.0中,您可以使用以下内容:http://jcaptcha.sourceforge.net/apidocs/1.0/com/octo/captcha/service/image/AbstractManageableImageCaptchaService.html 在2.0-alpha1版本中,有以下内容:http://jcaptcha.sourceforge.net/apidocs/2.0-alpha1/com/octo/captcha/service/image/AbstractManageableImageCaptchaService.html#getImageChallengeForID(java.lang.String) 您还可以检查这些方法的重载版本,带有额外的 Locale 参数。
在每种情况下,都有一个默认的实现类 DefaultManageableImageCaptchaService

嗨,Guillaume,我尝试了你的答案,效果很好,非常感谢你的帮助。只是我不得不改变将验证码图像放入标签的方式:BufferedImage imgCaptcha = servicioCaptcha.getImageChallengeForID(“”+id); - Hermandroid
谢谢!!!它起作用了,所以只需要验证一个就可以使用DefaultManageableImageCaptchaService :: validateResponseForID(“”+ id,this.txtCaptcha.getText()); 谢谢,我非常感激你的帮助。 - Hermandroid

-1
BufferedImage captcha = // Get the captcha

// See also 
com.octo.captcha.service.image.AbstractManageableImageCaptchaService.getImageChallengeForID(String)

JLabel label = new JLabel(new ImageIcon(captcha));
// ... add that label to a visible container of your Swing application

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接