Acessar item da JComboBox

14 respostas
S

Bom dia pessoal,

Estou com uma dúvida.

Tenho uma JComboBox que recebe um array. O problema é o seguinte: quando tento criar um método para acessar seu getSelectedItem ou Index, eu recebo um erro. O Eclipse grifa em vermelho o nome da minha JComboBox. Ex.:

public void atribuirCor(){
color.getSelectedItem();
}

Quando eu coloco essa linha junto com a declaração da JComboBox não dá nenhum erro. Só quando tento dentro de um método.

Alguém poderia me ajudar?

Obrigado.

14 Respostas

S

Só precisava de um auxílio para poder pegar o Index, ou Item do JComboBox, pq depois pretendo usá-los como argumentos de um método.

Obrigado.

F

Cara… Não entendi o seu problema.
Pra pegar o index ou item é só usar esse método que você fez… getSelectedItem() ou getSelectedIndex().
Ou então getModel().um-dos-dois-metodos()

S

O que eu quero fazer é mais ou menos isso:

btbotao.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){

atribuirCor(color.getSelectedIndex());

}


);}


public void atribuirCor(int x){

switch (x){

case 1: caixa.setBackground(Color.BLACK);
break;
case 2: caixa.setBackground(Color.BLUE);
break;
case 3: caixa.setBackground(Color.ORANGE);
break;
}
}

É mais ou menos isso. Chamar um método, e passar como argumento o Index do Array. Eu tentei fazer isso, mas o Eclipse grifa o color.getSelectedIndex(); (só a parte do color, na verdade).

Como eu poderia resolver esse problema?

batista.gerson

Não entendi qual o problema mas como disse o fasts nao e so
pegar tipo:

String teste1 = jComboBox1.getSelectedItem().toString();
 int  teste2 = jComboBox1.getSelectedItem();

E outra já que tu pode no msm lugar do JComboBox e nao da erro e dentro do metodo da, esse combo nao deve ta declarado como de classe senão ele iria ser visto por toda a classe.

erico_kl

o objeto color é do tipo JComboBox?

S

Então pessoal, o objeto Color é do tipo JComboBox sim.

Já declarei o JComboBox dentro e fora do construtor, e dá erro do mesmo jeito.

Vou tentar explicar melhor minha intenção:

Eu tenho um botão, e um array num JComboBox com os nomes BLACK,BLUE E ORANGE.

E tenho uma caixa de texto chamada caixa.

O que eu quero fazer:

vamos supor que eu escolha no JComboBox ORANGE. Quando eu clicar no botao, a caixa de texto terá que ser pintada da cor laranja.

Era para o código que eu postei, fazer isso.
Acho que agora eu expliquei melhor, né?

F

Então o seu JComboBox recebe objetos Color.
É só você fazer uma comparação.

erico_kl

repare que você está acessando o objeto color de dentro de um ActionListener, então o escopo deste objeto tem que ser global (para a classe inteira).
Você está declarando ele dentro do método? se sim, coloque ele para final ou declare ele como objeto da sua classe

S
Soruji:
btbotao.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){

atribuirCor(color.getSelectedIndex());

}


);}


public void atribuirCor(int x){

switch (x){

case 1: caixa.setBackground(Color.BLACK);
break;
case 2: caixa.setBackground(Color.BLUE);
break;
case 3: caixa.setBackground(Color.ORANGE);
break;
}
}

Eu resolvi essa questão erico, obrigado. Mas apareceu um outro problema. O argumento que quero passar para o método é do color.getSelectedIndex(), ou seja, o índice do array selecionado. Mas quando eu declaro o método que parametro eu devo colocar? Estou colocando int x, mas está dando erro. O parâmetro é de outro tipo? Tenho que fazer alguma conversão?

O Eclipse está grifando o atribuirCor() de dentro do evento do botão.

Obrigado, desde já.

S

O que eu fiz de errado para o Eclipse grifar o método que foi chamado no evento do botão?

S

Estava pensando em fazer assim:

int y = Integer.parseInt(color.getSelectedIndex());

atribuirCor (y);

Será que assim funciona e para de dar erro no método?

erico_kl

o método getSelectedIndex() já retorna um tipo inteiro… o que vc tem que fazer é deixar o parâmetro do método atribuirCor inteiro também

private void atribuirCor(int cor) { if (cor == 0) { ... }else if ... }
e chamá-lo passando o index do seu combo:

... atribuirCor(seuCombo.getSelectedIndex()); ...
não importa se vc criar uma variável que receba o index ou passá-lo diretamente no método, ambas as maneiras terão que dar certo…

S

Eu também já pensei nisso. Devo estar fazendo alguma coisa muito errada pra estar dando erro. :expressionless:

erico_kl

mas no que exatamente está acusando erro?

Criado 5 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 14
Participantes 4