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.
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.
Boa tarde,
estou com a mesma duvida do cara ali em cima, será que podias especificar melhor?
Obrigado
rof20004 tem como vc me explicar melhor… Obrigado
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
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);
}
}
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.
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?
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
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
entao, usa o itemStateChanged.
Este é o codigo que eu tenho na minha JComboBOx
[code]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();
}
[/code]
Eu ja usei, mais ele pega toda a informação do JComboBOx, mais eu soh quero o peso
[code]private void cbclienteItemStateChanged(ItemEvent evt) {
txtpeso.setText((String) cbentrada.getSelectedItem());
}[/code]
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.
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.
rof20004 poderia me dar um exemplo? Obrigado
sim
String[] comboTexto = combo.getSelectedItem().toString().split("-");
textField.setText(comboTexto[1]);
onde eu coloco?
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.