Como faço para quando alguém lançar um valor em uma célula de uma jtable, o sistema aplique um método para mudar uma combobox da jtable em aprovado ou reprovado?
VerificarResultdo();
Como faço para quando alguém lançar um valor em uma célula de uma jtable, o sistema aplique um método para mudar uma combobox da jtable em aprovado ou reprovado?
VerificarResultdo();
Isso ai da trabalho.
O seu ponto de partida para analisar as células deve ser as instruções:
1 - suaTabela.getSelectedRow()
; e
2 - suaTabela.getSelectedColumn()
.
Para realizar o processamento, você vai precisar trabalhar com KeyListner.
Ex.: digitou enter, clicou seta pra cima, … opa, verificarResultado(), atualizarComboBox()
.
Também necessita de mouseEvent(), pois com um clique pode passar de uma célula para a outra, a exemplo de estar digitando na célula da linha 3, coluna 5, ai clica com o mouse em outra célula, … opa, verificarResultado(), atualizarComboBox()
.
Além disso tem outros tratamentos, para o caracteres inválidos e outros que não precifiquei no momento.
Fiz um esboço apenas para fins de noção:
int ultimaLinhaEditada, ultimaColunaEditada;
public void evento() {
suatabela.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent ke) {
/*filtrar as teclas a seguir, pois essas teclas estão relacionadas a movimentos na tabela, se uma delas for acionada atualizar
o combobox, e a lista de Alunos, por exemplo
*/
//se for pressionado KeyEvent.VK_ENTER; KeyEvent.VK_LEFT; KeyEvent.VK_RIGHT; KeyEvent.VK_LEFT;
//atualize alguma coisa
//se não
ultimaLinhaEditada = suatabela.getSelectedRow();
ultimaColunaEditada = suatabela.getSelectedColumn();
//fim se
}
@Override
public void keyTyped(KeyEvent ke) {
//algumas entradas devem ser consumidas, exemplo, em caso de notas, letras devem perecer
}
});
suatabela.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
//avaliar a necessidade
}
@Override
public void mousePressed(MouseEvent me) {
//avaliar a necessidade
}
@Override
public void mouseReleased(MouseEvent me) {
//avaliar a necessidade
}
});
}
Té+
teria como vc me mostrar como esse if funciona? não estou sabendo monta-lo.
e também tenho um problema, pq se a celula estiver vazia, ele n pode chamar o método, mas se tiver alguma coisa, ele chama o método
Esta é a base:
private void eventos() {
suatabela.addKeyListener(new KeyAdapter() {
//estas teclas promovem movimento na tabela
final int[] excessoes = {KeyEvent.VK_ENTER, KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN, KeyEvent.VK_UP};
@Override
public void keyReleased(KeyEvent ke) {
boolean semMovimento = IntStream.of(excessoes).filter(movimento -> movimento == ke.getKeyCode()).findFirst().orElse(Character.MAX_VALUE + 1) == Character.MAX_VALUE + 1;
if (suatabela.getSelectedRow() > 0 && semMovimento) {
//você vai usar estas duas variáveis para localizar a celula em edição
ultimaLinhaEditada = suatabela.getSelectedRow();
ultimaColunaEditada = suatabela.getSelectedColumn();
} else {
System.out.println("Ultima linha Editada = " + ultimaLinhaEditada + "\nUltima coluna Editada: " + ultimaColunaEditada);
//quando uma tecla que promove movimento for acionada, você realiza o processamento que necessitar
//atualizarComboBox();
//atualizarNotaAlunos();
}
}
});
}
Se uma tabela não tiver nada, simplesmente não lance aprovado, nem reprovado, mas sim em análise, no Combobox.
Além disso, o ideal seria utilizar a própria tabela, para dizer se está aprovado, reprovado ou em análise, mas ai depende da sua necessidade.
Outra coisa, você vai ter que trabalhar com eventos de teclado e de mouse, fora outras coisas, pois tem muita lógica envolvida nestes processos.
mas onde entra meu metodo q muda o combobox q é o VerificarResultdo();?
if (suatabela.getSelectedRow() > 0 && semMovimento) {
//você vai usar estas duas variáveis para localizar a celula em edição
ultimaLinhaEditada = suatabela.getSelectedRow();
ultimaColunaEditada = suatabela.getSelectedColumn();
} else {
System.out.println("Ultima linha Editada = " + ultimaLinhaEditada + "\nUltima coluna Editada: " + ultimaColunaEditada);
//quando uma tecla que promove movimento for acionada, você realiza o processamento que necessitar
//Sugestão: neste bloco de instrução, pois é neste espaço que você sabe que o cliente deixou de digitar algo
}