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.
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
fasts
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()
É 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
Soruji
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
fasts
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
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
Soruji
O que eu fiz de errado para o Eclipse grifar o método que foi chamado no evento do botão?
S
Soruji
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
Soruji
Eu também já pensei nisso. Devo estar fazendo alguma coisa muito errada pra estar dando erro.