Assim q eu selecionar um JComboBox preencher JTextField

18 respostas
M

Assim q eu selecionar um JComboBox ( que ja esta gravado no banco de dados) ele irá buscar um registro no banco e uma dessas informações eu quero q apareça em um JTextField.

18 Respostas

R

tem o evento “itemStateChanged”, que executa uma acao apos a mudança do componente.

nessa ação voce faz uma consulta e seta o textfield.

Abraços.

W

Boa tarde,

estou com a mesma duvida do cara ali em cima, será que podias especificar melhor?

Obrigado

M

rof20004 tem como vc me explicar melhor… Obrigado

M

estou fazendo um trabalho, ja tentei alguns codigos mais não foi possivel, vou exemplificar, meu trabalho tem uma tela entrada, nessa tela tem o nome e o peso, e uma tela saida onde eu tenho q selecionar a entrada, mais para fazer o calculo do peso tenho q fazer uma multiplicação e dar o resultado da quantia em dinheiro, então a minha ideia é… assim que eu selecionar esta entrada(ja gravada no banco de dados) o peso aparece no JTextField para efetuar o calculo… o calculo ja está OK, soh falta o peso aparecer dentro do campo

F

Faça suas mudanças nesse código para adequar as suas necessidades.

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main extends JFrame {

	private static final long serialVersionUID = 1L;
	private final String BANCOS[] = { "Banco Real", "Bradesco", "Caixa" };
	private JComboBox cmb;
	private JTextField tf;

	public Main() {
		super("ComboBox");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 70);
		setResizable(false);
		setLayout(new GridLayout(1, 2));

		cmb = new JComboBox(BANCOS);
		tf = new JTextField();
		tf.setEditable(false);
		add(cmb);
		add(tf);

		cmb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				tf.setText((String) cmb.getSelectedItem());
			}
		});

	}

	public static void main(String[] args) {
		new Main().setVisible(true);
	}

}
R

tem como voce passar mais detalhes ?

tipo, quando voce selecionar algo no ComboBox, ele precisa pegar esse valor e passar para a consulta ? o valor que ele vai pegar é um numero ? uma string ?

Se voce precisar fazer essa acao, o itemStateChanged é o necessário, visto que ele executara uma acao cada vez que voce mudar o combobox.

D

Bom, vamos lá pelo que eu entendi vc quer que quando o JComboBox for selecionado o sistema irá consultar
o banco de dados preenchendo um JTextField com resultado desta consulta?

M

Isso mesmo diego_ms136, quero q quando selecionar uma Entrada( gravada no banco de dados) no JComboBox o valor Peso seja enviado para o JTextField para efetuar o calculo

M

rof20004, tenho no banco de dados o tabela Entrada, na tela saida eu quero q esta entrada seja selecionada no JcomboBox, assim que a pessoa selecionar esta entrada ( que tem como dados gravados no banco de dados codigo, nome e peso) o peso desta entrada vai para o campoJTextField para efetuar o calculo

R

entao, usa o itemStateChanged.

M
Este é o codigo que eu tenho na minha JComboBOx
private void listarEntrada() {
		try {
			rs = ConexaoBD.getConexao().executeQuery("select count(*) as NUMENTRADA from ENTRADA");

			int tamanho = 0;

			if (rs.next())
				tamanho = rs.getInt("NUMENTRADA");

			rs = ConexaoBD.getConexao().executeQuery("select * from ENTRADA");

			cbentrada.addItem("*** Selecione uma Entrada ***");

			listaCodigoEntrada = new int[tamanho];
			
			

			for (int i = 0; rs.next(); i++) {
				cbentrada.addItem(rs.getString("NUMENTRADA") + " - "
						+ rs.getString("SUBCATEGORIA_codsubcate"));
				listaCodigoEntrada[i] = rs.getInt("NUMENTRADA");	
			}	
			
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Erro ao listar a Entrada.");
			System.out.println("Erro:\n" + e + "\n");
			e.printStackTrace();
		}
M
Eu ja usei, mais ele pega toda a informação do JComboBOx, mais eu soh quero o peso
private void cbclienteItemStateChanged(ItemEvent evt) {
		txtpeso.setText((String) cbentrada.getSelectedItem());
	
	
	}
R

Entao, acho que voce pode resolver com logica somente:

cbentrada.addItem(rs.getString("NUMENTRADA") + " - "  
                        + rs.getString("SUBCATEGORIA_codsubcate"));

Seu combo ta concatenando 2 colunas, mas se verificar bem, o combo recebe somente um parametro, que é as Strings concatenadas, logo, a meu ver, o que voce precisara fazer é setar uma String no metodo de consulta que recebe a segunda String, e depois passar isso pro TextField.

Ou entao, pode fazer melhor, cria um Indice pro combo, onde o indice sera o NUMENTRADA e o valor sera a SUBCATEGORIA, dai quando for pegar o valor do peso voce pode fazer combo.getModel().getElementAt(indice).

Abraços.

R


Tem algo ainda melhor:

voce cria um array de string que recebe a separacao as concatenacoes pelo ’ - ', usando o metodo split da classe String, dai voce pega o segundo valor do array e passa pro textfield =D

Esse ai com certeza fica mais legal, hehehe…

Abraços.

M

rof20004 poderia me dar um exemplo? Obrigado

R

sim

String[] comboTexto = combo.getSelectedItem().toString().split("-");
textField.setText(comboTexto[1]);
M

onde eu coloco?

R

Mano, ja te passei a solucao, desculpe mas acho que vai ficar de mais se eu fizer pra voce. Agora é com voce, jaja vao reclamar falando que to dando codigo de mao beijada quer ver ? ( o que nao é minha intenção ). E outra, o que passei ta muito claro, se voce nao souber onde colocar isso, é melhor voce comecar a estudar algoritmos estruturados.

Abraços.

Criado 15 de outubro de 2012
Ultima resposta 17 de out. de 2012
Respostas 18
Participantes 5