eu estou tendo um problema implementei uma classe onde eu do um extends em DefaultTableCellRenderer
faço as devidas validaçoes nas celulas da tabela…até ae td bem mas o problema eh q a validaçao soh serve quando eu nao estou no modo de edição
e pelo que percebi é gravado no banco oq consta no CellEditor e nao no CellRenderer entao ae esta o problema a validação só serve para a hora que perco o focu da celula agora qdo entro no modo de ediçao dela ela volta o valor antigo e na hora de salvar ela salva os valores que aparecem no modo ediçao
essa eh a classe de validaçao
[code]public class Colorir extends DefaultTableCellRenderer implements TableCellRenderer {
public Colorir() {
setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
//Valida célula hora da tabela
try {
if (value != null && !value.equals("")) {
if (value.toString().indexOf("_") == -1) {
if (Integer.parseInt(value.toString().substring(0, 1)) >= 3) {
value = "";
} else if (Integer.parseInt(value.toString().substring(0, 1)) >= 2 &&
Integer.parseInt(value.toString().substring(1, 2)) >= 4) {
setBackground(Color.RED);
} else if (Integer.parseInt(value.toString().substring(3, 4)) >= 6) {
setBackground(Color.RED);
}
} else if (value.equals("__:__")) {
value = "";
} else {
setBackground(Color.RED);
}
} else {
setBackground(table.getBackground());
}
if (value != null) {
setText(value.toString());
}
} catch (Exception e) {
}
return this;
}
public void validate() {
}
public void revalidate() {
}
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {
}
public void firePropertyChange(String propertyName,
boolean oldValue, boolean newValue) {
}[/code]
e aqui onde eu adiciono um component na celula escolhida da tabela
[code]public void FormataCampoHora() {
//Formata campo da tabela
try {
celulaHora = new MaskFormatter("##:##");
celulaHora.setPlaceholderCharacter(’_’);
} catch (ParseException e) {
e.printStackTrace();
}
// Jogando a máscara no JFTF
jftf = new JFormattedTextField(celulaHora);
jftf.setMargin(new java.awt.Insets(0, 0, 0, 0));
for (int i = 0; i < 7; i++) {
for (int j = 1; j < 16; j += 2) {
if ((j % 2 == 1) && (j < 16)) {
TableColumn col = tbHorarios.getColumnModel().getColumn(j);
col.setCellEditor(new DefaultCellEditor(jftf));
}
}
}
}[/code]
como eu faço pra validacao servir tanto no renderer qto no edit?
Obrigado.