2012-07-16 12 views
5

Ho bisogno di aggiungere un validatore captcha in un'applicazione java swing. Ho cercato alcune librerie (JCaptcha e SimpleCatcha) ma sono per lo sviluppo web.Come mostrare un captcha in un'applicazione java swing

C'è qualche libreria per usare il captcha su swing? e se non lo è, c'è una pagina web o un repository con alcuni caratteri del captcha per implementare il mio captcha?

Apprezzo molto il vostro tempo e il vostro aiuto.

Grazie in anticipo.

+4

Buona domanda - ho trovato quest'altra domanda simile in cui i colloqui di risposta su jCaptcha: http://stackoverflow.com/questions/6219029/captcha-library-for-swing - Posso chiedere che cosa lo scopo di un captcha in un'app swing è? – ametren

+1

@ametren: se l'app Swing è un front-end di un'applicazione Web, non vedo perché utilizzare CAPTCHAs non sia così utile come nel browser. –

+0

@JBNizet Sì, posso vederlo, ma sembra solo sollevare più domande per me - come, ad esempio, perché dovresti front-end un'app web con un'app swing? Non sto cercando di convincere il richiedente, solo cercando di capire il caso d'uso. – ametren

risposta

4

JCaptcha può restituire un'Immagine Bufferata. Da lì non è molto difficile da ottenere l'immagine visibile utilizzando un 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 

Nella versione 1.0, è possibile utilizzare questo: http://jcaptcha.sourceforge.net/apidocs/1.0/com/octo/captcha/service/image/AbstractManageableImageCaptchaService.html

In 2.0-alpha1, c'è questa: http://jcaptcha.sourceforge.net/apidocs/2.0-alpha1/com/octo/captcha/service/image/AbstractManageableImageCaptchaService.html#getImageChallengeForID(java.lang.String)

È anche possibile controllare la versione sovraccaricata di questi metodi con un argomento supplementare Locale.

In ogni caso, esiste una classe di implementazione predefinita DefaultManageableImageCaptchaService.

+0

Grazie mille !!! Ho intenzione di provarlo e posterò come ho fatto. – Herman

+0

Ciao Guillaume, ho provato la tua risposta e ho lavorato bene, ho davvero apprezzato il tuo aiuto, solo ho dovuto cambiare il modo di mettere l'immagine captcha nell'etichetta: BufferedImage imgCaptcha = servicioCaptcha.getImageChallengeForID ("" + id); – Herman

+0

Grazie !!! funziona, quindi per convalidarne solo uno usa DefaultManageableImageCaptchaService :: validateResponseForID ("" + id, this.txtCaptcha.getText()); grazie, apprezzo molto il tuo aiuto – Herman

0
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