To com uma JTable aqui e minha ultima coluna eu renderizo um combobox com dois valores predefinidos… O que eu to querendo fazer é o seguinte… se o cara vai na linha 3 e muda o valor desse combobox eu queria varrer o model da jTable para saber se tem mais alguma linha onde a coluna 0 da linha que eu alterei o combo são iguais. Por exemplo… na coluna 0 da linha 3 eu vou la e alter o combo pra um valor x… o valor dessa coluna zero é “Olá”. A coluna 0 das linhas 9 e 10 também têm esses valores. então o como box dessas linhas também deve ficar com o valor x… eu cheguei perto disso… soh que eu usei o itemstatechange e ele ta revalidando tudo aqui e no final das contas todos os combos ficam com o mesmo valor…
Se puder me ajudar agradeço…
Vai ai o que já consegui… soh q ta num loop infinito… eu tentei tratar pra não disparar o evento de alteração pra alguns casos pra não cair em loop (Por exemplo, não mudar o valor do JComboBox para o próprio Combo que disparou o evento. Isso geraria outro envendo de alteração e cairia num loop…). Más não ta rolando…
import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
/**
*
* @author Vinicius
*/
public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(String[] items, JScrollPane p) {
super(items);
this.p = p;
this.box = this;
}
public Component getTableCellRendererComponent(final JTable table,
Object value, boolean isSelected, boolean hasFocus, final int row, int column) {
this.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (table.getSelectedRow() != row) {
return;
}
String item = table.getValueAt(table.getSelectedRow(), 3).toString();
String servico = table.getModel().getValueAt(row, 0).toString();
for (int i = 0; i < table.getRowCount(); i++) {
if ((table.getModel().getValueAt(i, 0).toString().compareTo(servico) == 0)) {
if (table.getValueAt(i, 3) == null || table.getValueAt(i, 3).toString().compareTo(item) != 0) {
table.setValueAt(item, i, 3);
}
}
}
p.setViewportView(table);
}
});