Acionar evento SetValueAt em um ComboBox dentro de uma Jtable... [Resolvido]
8 respostas
D
DeGuedes
Aew galera, preciso de mais uma ajuddinha de vcs…
Hj de manha o vini me ajudou a criar um ComboBox dentro de um JTable… e ta funcionando perfeitamente…
o problema é que se eu clico no botao salvar sem clicar em outro lugar da tabela, ele nao pega o valor selecionado…
pelo q eu vi o metodo SetValueAt(Table Model) só eh acionado quando eu clico em outra linha ou outra coluna… se eu clicar em qualquer outro lugar ele nao aciona esse metodo…
Ja tentei usar o Enter e somente o TAB funciona…
Vamos analisar o cenário, você criou uma JTable e em uma determinada célula (ou nas célular de uma coluna) colocou um JComboBox, certo?
Se você pretende setar um valor para qualquer célula da tabela, pode normalmente usar o setValueAt(). Caso esteja querendo inserir um novo valor no JComboBox, bem, aí é outra história…
D
DeGuedes
Isso mesmo eu tenho uma tabela com um combo, porem quando eu seleciono determinado valor dele e logo apos eu clico em salvar, ele nao aciona o evento SetValueAt… entendeu?
ele só aciona esse evento se eu clicar em outro lugar da tabela…
eu queria saber se existe um modo de chamar esse evento quando eu clicar no botao;…
Você compreendeu a estrutura que criou?
Pense na table como uma parede.
Você criou uma janela na parede, colocando o combobox, logo, naquele espaço, não é possível selecionar os tijolos da parede (o valor da célula em que está o combobox).
Sendo assim, você deve pegar o valor que a janela que foi colocada na parede possui. Se precisa do que está sendo mostrado ao usuário, o método getSelectedValue() deve ser utilizado (não esqueça do toString() no final, para atribuir à uma String, se for o caso).
D
DeGuedes
drsmachado:
Você compreendeu a estrutura que criou?
Pense na table como uma parede.
Você criou uma janela na parede, colocando o combobox, logo, naquele espaço, não é possível selecionar os tijolos da parede (o valor da célula em que está o combobox).
Sendo assim, você deve pegar o valor que a janela que foi colocada na parede possui. Se precisa do que está sendo mostrado ao usuário, o método getSelectedValue() deve ser utilizado (não esqueça do toString() no final, para atribuir à uma String, se for o caso).
entendi… mas como eu pego esse getSelectdValue()? do JTable?
outra coisa, eu tenho minha classe ComboBoxEditor:
publicclassComboBoxEditorextendsAbstractCellEditorimplementsTableCellEditor{privateJComboBoxfield;privateProdutos[]values={};privateList<Produtos>lpro=newArrayList<Produtos>();privateProdutosJpaControllerprojpa=newProdutosJpaController();@OverridepublicComponentgetTableCellEditorComponent(JTabletable,Objectvalue,booleanisSelected,introw,intcolumn){lpro=projpa.findProdutosEntities();field=newJComboBox(values);field.addItem("");for(inti=0;i<lpro.size();i++){field.addItem(lpro.get(i));}field.setSelectedItem(value);//Deixa o editor pré-selecionado com o valor da célulareturnfield;}@OverridepublicObjectgetCellEditorValue(){returnfield.getSelectedItem();}}
O metodo getCellEditorValue(), nao deveria me retornar isso?
[]'s
D
DeGuedes
CARA eu sou muito burroooo… shaushauhsuahsuahsuahsa
era só por esse codigo no inicio da classe e problema resolvido!!!