Teclado Virtual com JApplet

Olá,

estou fazendo um trabalho de faculdade e, nele, é necessário criar um teclado virtual com a classe JApplet.

Pois bem. Tenho algumas dúvidas referentes à sua implantação.
Li em determinados fóruns que o JApplet nada mais é que uma 'implantação do JFrame' (em palavras soltas).
Ou seja, para eu criar o JApplet, seria a mesma coisa que criar o teclado virtual pelo JFrame e, no final, trocar a classe estendida para JApplet? Se sim, como eu faria para, após, visualizar no Browser? Estou usando o Netbeans para desenvolvimento. E, após visualizado, como passar os dados para o request do JSP/Servlet?

Muito obrigado desde já.

Sim, dá uma olhada nesse exemplo: http://artigos.tekever.eu/ver/?22/applets_em_paginas_html/

No clique do seu botão, você irá escrever isso:

getAppletContext().showDocument(suaurl.com?parametro1=value1&parametro2=value2);

Espero ter ajudado

Uau!
Acredito que não poderia ser melhor!
Hoje a noite testarei as soluções dadas e já retorno um feedback!

Abraço!

[quote=jeancz][quote=tokageh]
Ou seja, para eu criar o JApplet, seria a mesma coisa que criar o teclado virtual pelo JFrame e, no final, trocar a classe estendida para JApplet?
[/quote]

Sim, dá uma olhada nesse exemplo: http://artigos.tekever.eu/ver/?22/applets_em_paginas_html/

No clique do seu botão, você irá escrever isso:

getAppletContext().showDocument(suaurl.com?parametro1=value1&parametro2=value2);

Espero ter ajudado

[/quote]

Lembrei de um probleminha que isso possa te gerar. O que vai acontecer é que o parâmetro digitado irá aparecer lá na barra de endereço do browser.

Uma maneira bem simples mas não muito elegante de resolver é você criar um frame na sua página html e usar o método showDocument(url, target).

Na prática funcionaria assim:

<html>
	<body>
		<!-- seu applet -->
		...


		<!-- aqui criamos o iframe e damos o nome de meuresultado -->
		<iframe name="meuresultado">
			
		</iframe>
	</body>
</html>

No applet você implementaria assim:

	// meuresultado é o nome que você deu pro iframe 
	getAppletContext().showDocument("suaurl.com?parametro1=value1&parametro2=value2", "meuresultado");

A maneira mais dificil, pórem considero um pouco menos gambiosa, é a seguinte:

  1. Cria-se uma função javascript na sua página:
<html>
	<body>
		<script language="JavaScript">
			function teste(param1, param2) {
				// depois você troca por uma requisição ajax ou usa window.open escondendo a barra de endereço
				alert("Valores digitados no applet: " + param1 + ", " + param2);
			}
		</script>
	
		<!-- seu applet -->
		...
		
	</body>
</html>
  1. No applet fica assim:
	// considerando que você tenha dois edits na tela chamados: edit1 e edit2, fazemos a chamada para o método javascript da página html
	getAppletContext().showDocument("javascript:teste(" + edit1.getText() + "," + edit2.getText() + ")");	

Não teria como enviar os dados via POST?

Abraços!

[quote=tokageh]Não teria como enviar os dados via POST?

Abraços![/quote]

Acho que essa é a pergunta mais feita na internet. Eu tinha a mesma dúvida procurei em tudo quanto é canto e não achei nada. Daí por um acaso eu achei esse esquema do javascript no site da sun.

Se por um acaso tu achar a resposta me passe porque também preciso.

Uma outra solução que eu achei é usar HttpConnection ou HttpClient pra mandar a requisição. Porém quando se faz isso você estará autenticando um client diferente do browser criando uma seção separada no servidor.

Não sei se me fiz entender.

Sim sim, te entendi.

É que, no propósito do trabalho, necessito fazer o teclado virtual para ser uma tela de login.
Enviando os dados para o servlet, seria redirecionado para outro jsp (sucesso ou falha).

E não seria nada bacana enviar os dados via GET, aparecendo na url… rsrsrsrs

Sugestões?

Valeu pelas dicas!
Abraços!

Daí recomendo o uso da segunda opção usando uma função javascript que faz a requisição via ajax.

Fica uma beleza, não aparece nada na tela.