Dúvida com JOptionPane

9 respostas
D

Pessoal estou com um problema em possibilitar que o usuáro entre com duas strings em um JOptionPane, se é que isto é possível. Em meu programa tenho um JOptionPane no qual o usuário entra com o número da linha para a qual ele deseja enviar a string e depois com a string. Gostaria de ver com vocês se existe algum tipo de caixa de texto que possibilite ao usuário digitar duas strings tipo:

Não sei se fui claro em minha dúvida, mas agradeço se alguém puder me dar uma dica de como fazer isto com JOptionPane se for possível ou com outro tipo de comando.

9 Respostas

D
JOptionPane.showInputDialog(null, new JTextField(20));

Dentro de um InputDialog é possível outros objetos. Se precisar inserir mais campos coloque todos dentro de JPanel e depois passe como parâmetro do método showInputDialog.

L

Vc pode usar um showmessage, com um Panel dentro, e depois coletar os dados de cada JTextField

D

Valeu dok pela dica, mas não entendi como eu poderia fazer para dividir o conteúdo destas strings, pois da maneira que estou testando, ele está pegando sempre o conteúdo do que é digitado por último, não conseguindo pegar o valor digitado no campo de cima.
Tipo se rodo o programa com o seguinte comando:

linha= JOptionPane.showInputDialog(null, new JTextField(20));
nlinha= Integer.parseInt(digitar);

Ele abre a janela com duas caixas de digitação, mas sempre com o cursor na última e ao digitar nas duas caixas, a variável nlinha assume somente o valor da última caixa. Tipo se digito 1 na primeira caixa e 2 na segunda, nlinha assume 2. Gostaria de que se possível alguém me mostrasse uma maneira de fazer com que tivessem duas variáveis, cada uma assumindo o valor de uma das caixas, onde no exemplo eu tivesse a variável nlinha = 1 e nlinha2 = 2 por exemplo. Agradeço se alguém puder me dar uma dica de como resolver este problema.

D

lcsoftware você poderia me mostrar um exemplo de como fazer isto. Agradeço se puder me ajudar, estou meio perdido.

D
import javax.swing.*;
import java.awt.*;
/**
 * @author Daniel
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Testando {
	public static void main(String args[])
	{
		JPanel painel = new JPanel();
		JTextField texto1 = new JTextField(20);
		JTextField texto2 = new JTextField(20);
		JLabel label1 = new JLabel("Texto1: ");
		JLabel label2 = new JLabel("Texto2: ");
                                painel.add(label1);
		painel.add(texto1);
		painel.add(label2);
		painel.add(texto2);
		painel.setLayout(new GridLayout(2,2));
		JOptionPane.showMessageDialog(null, painel);
		JOptionPane.showMessageDialog(null, "Texto1 possui o valor: " + texto1.getText());
		JOptionPane.showMessageDialog(null, "Texto2 possui o valor: " + texto2.getText());
		System.exit(0);
	}


}
D

Valeu dok, era bem isto que eu estava precisando. :grin:
Obrigado!

C

Irmao, n e me entrometendo, mas com oq ficaria pra dividir em duas classes isso?

Um q monta o painel e outro, q ao JOptionPane aparecer, ele chama a classe q monta o painel! :roll:

D

Ratinho, através destas duas strings eu divido a montagem do painel em duas linhas distintas, convertendo estes caracteres para hexadecimal e de hexa para caracter ASCII e concateno cada string com os respectivos caracteres ASCII do protocolo de envio de mensagem utilzado pelo painel e logo depois concateno as duas strings enviando as mesmas via porta serial para o painel. Não sei se respondi direito a sua pergunta, mas qualquer dúvida posta aí que te retorno, falow. Abraço! :grin:

D

Pessoal, com a ajuda de vocês consegui fazer funcionar, estou utilizando a dica do dok, só que gostaria de ver com vocês se tem alguma maneira de fazer com que ao rodar o programa, na tela do JPanel, o cursor fique sobre a linha de digitação, pois assim como o dok me passou, sempre que eu quero digitar, primeiramente eu preciso posicionar o cursor dentro da parte de digitação da linha.
Estou utilizando o seguinte código:

JPanel painel = new JPanel(); JTextField texto1 = new JTextField(10); JTextField texto2 = new JTextField(10); JLabel label1 = new JLabel(" Linha 1:"); JLabel label2 = new JLabel(" Linha 2:"); painel.add(label1); painel.add(texto1); painel.add(label2); painel.add(texto2); painel.setLayout(new GridLayout(2,2)); JOptionPane.showMessageDialog(null, painel); Agradeço se alguém puder me dar uma força.

Criado 20 de outubro de 2004
Ultima resposta 21 de out. de 2004
Respostas 9
Participantes 4