Boa Tarde Companheiros ...
Estou com um Dilema ...
Acrescentei dois JCombobox em minha JTable, onde o usuário pode optar por escolher o produto pelo combo de Código ou Combo de Descrição.
Com a Escolha do Combo Código é setado um valor corresponder no combo de Descrição(isso ocorre através de index (array) )
Com a Escolha do Combo Descrição é setado um valor corresponder no combo de Codigo(isso ocorre através de index (array) )
Meu problema é: Saber em qual combo o usuário clicou para saber qual o nome da minha coluna.
JCombobox codigo = coluna Codigo
JCombobox descricao = coluna Descrição
O código abaixo funciona para todas colunas restantes da tabela, menos pra essas duas colunas:
JTModular - JTable
jTModular.addMouseListener( new MouseAdapter() {
@Override
public void mouseClicked( MouseEvent e ) {
int x = e.getX();
int y = e.getY();
String nomeColuna = jTModular.getColumnName(jTModular.getColumnModel().getColumnIndexAtX(x));
JOptionPane.showMessageDialog(null, "Clicou na Coluna: " + nomeColuna);
}});
}
O Codigo que tratará o evento será:
Obs: Quem passa itemSelecionado é o itemStateChanged do combo ...
public void atualizarFocus(String itemSelecionado){
//this.nomeColuna = jTModular.getColumnName(jTModular.getSelectedColumn());
JOptionPane.showMessageDialog(null, "Coluna é : " + this.nomeColuna + " - Item : " + itemSelecionado) ;
int itemNumero = -1;
String valor;
if (this.nomeColuna.equals("Codigo")){
if (!itemSelecionado.equals("")) {
for (int contador = 0; contador < this.tamanhoArray; contador++){
valor = this.codigo[contador];
if (itemSelecionado.equals(valor)){
itemNumero = contador;
}
}//For
if (itemNumero != -1){
//Seleciona o Item correspondente na Descrição
jTModular.setValueAt(this.descricao[itemNumero],jTModular.getSelectedRow(),jTModular.getColumnModel().getColumnIndex("Descrição"));
//Seleciona o Item correspondente na Unidade
jTModular.setValueAt(this.unidade[itemNumero],jTModular.getSelectedRow(),jTModular.getColumnModel().getColumnIndex("UN"));
}//if
}//if
} else if (this.nomeColuna.equals("Descrição")){
if (!itemSelecionado.equals("")) {
for (int contador = 0; contador < this.tamanhoArray; contador++){
valor = this.descricao[contador];
if (itemSelecionado.equals(valor)){
itemNumero = contador;
}//if
}//For
if (itemNumero != -1){
//Seleciona o Item correspondente na Descrição
jTModular.setValueAt(this.codigo[itemNumero],jTModular.getSelectedRow(),jTModular.getColumnModel().getColumnIndex("Codigo"));
//Seleciona o Item correspondente na Unidade
jTModular.setValueAt(this.unidade[itemNumero],jTModular.getSelectedRow(),jTModular.getColumnModel().getColumnIndex("UN"));
}//if
}//if
}//if
}//Fim do Método
O código abaixo não informa corretamente todas as vezes:
this.nomeColuna = jTModular.getColumnName(jTModular.getSelectedColumn());
Já quebrei a cabeça muito antes de perguntar ... mas em todas minhas soluções cheguei perto mas não 100% ...
Desde já agradeço!