table.addMouseListener(new MouseListener() {...}
table.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent arg0) {
System.out.println("evento da jtable");
}});
table.addMouseListener(new MouseListener() {...}
table.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent arg0) {
System.out.println("evento da jtable");
}});
tenta implementar o mouse listener na sua tela
e dai adicionar na sua tabela
ex:
depois
table.addMouseListener(new MouseListener() {
//da para alterar os itens da jtable ou pelo mouseReleased ou mousePressed*
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("mouseReleased");
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("pressed");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("exited");
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("entered");
}
public void mouseClicked(MouseEvent arg0) {
if(table.getSelectedColumn()==3)
{
double valorNota = 0;
String message="Não há itens para recuperar";
String valor=null;
Object notaBanco=table.getModel().getValueAt(table.getSelectedRow(), 2);
valor=(String) notaBanco;
valorNota=Double.parseDouble(valor);
if (valorNota < 50.0){
try {
System.out.println("select recuperacao from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+ table.getModel().getValueAt(table.getSelectedRow(), 0) +"' and modulo='"+ table.getModel().getValueAt(table.getSelectedRow(), 1) +"'");
resultado = comando.executeQuery("select recuperacao from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+ table.getModel().getValueAt(table.getSelectedRow(), 0) +"' and modulo='"+ table.getModel().getValueAt(table.getSelectedRow(), 1) +"'");
if(resultado.next())
{
message=resultado.getString(1);
}
message="Registre a data da recuperação";
telaRecuperacao telarecup=new telaRecuperacao();
telarecup.setVisible(true);
Menu.w.add(telarecup);
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, message);
}
}
});
table.getModel().addTableModelListener(new TableModelListener()
public void mouseReleased(MouseEvent e) {
System.out.println("mouseReleased");
StringBuilder sql = new StringBuilder("UPDATE nota SET ");
switch (table.getModel().getColumnCount()) {
case 0:
sql.append("observacao = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),3 ));
sql.append("'"); System.out.println(sql+"*");
break;
case 1:
sql.append("atividade = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),4 ));
sql.append("'"); System.out.println(sql+"*");
break;
case 2:
sql.append("atividade = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),5 ));
sql.append("'"); System.out.println(sql+"*");
break;
case 3:
sql.append("atividade = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),6 ));
sql.append("'"); System.out.println(sql+"*");
break;
case 4:
sql.append("atividade = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),7 ));
sql.append("'"); System.out.println(sql+"*");
break;
case 5 :
sql.append("atividade = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),8 ));
sql.append("'");
System.out.println(sql+"*");
break;
default:
System.out.println("bah "+sql);
break;
}
sql.append(" WHERE rc_aluno='");
sql.append(t0.getText());
sql.append("'");
String update = sql.toString();
System.out.println(update);
// try {
// comando.executeUpdate(update);
// } catch (SQLException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
}
nao tem como eu verificar se tem erro (sem tempo)
mas uma ideia posso dar:
na maioria dos sistemas (ERPs) em que trabalhei, quando tem uma JTABLE e queremos alterar algum item, eu seleciono a linha e o sistema aparesenta uma tela com os dados alterados, faço minhas aterações confirmo e os dados da tabela são atualizados (vc pode fazer uma tela extendendo de um JDialog e no construtor dar um setModal(true)) na tabela e no seu caso no banco tambem
fica a dica :lol:
outra coisa, use mais metodos
# double valorNota = 0;
# String message="Não há itens para recuperar";
# String valor=null;
# Object notaBanco=table.getModel().getValueAt(table.getSelectedRow(), 2);
# valor=(String) notaBanco;
# valorNota=Double.parseDouble(valor);
# if (valorNota < 50.0){
# try {
# System.out.println("select recuperacao from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+ table.getModel().getValueAt(table.getSelectedRow(), 0) +"' and modulo='"+ table.getModel().getValueAt(table.getSelectedRow(), 1) +"'");
# resultado = comando.executeQuery("select recuperacao from nota where rc_aluno='"+ t0.getText() +"' and disciplina='"+ table.getModel().getValueAt(table.getSelectedRow(), 0) +"' and modulo='"+ table.getModel().getValueAt(table.getSelectedRow(), 1) +"'");
# if(resultado.next())
# {
# message=resultado.getString(1);
# }
#
# message="Registre a data da recuperação";
# telaRecuperacao telarecup=new telaRecuperacao();
# telarecup.setVisible(true);
# Menu.w.add(telarecup);
este processamento pode ser feito dentro de um metodo, o que deixaria seu codigo mais legivel
espero ter ajudado
bah ajudou sim vou fazer usando o jdialog do jeito que tu disseste porque fica mais facil saber o que vai ser alterado e tb mais seguro pq tu ve se tu quer alterar aquilo q tu alterou mesmo
ah e ocodigo vou jogar num metodo e chamar o mesmo ali .
Depois posto a solução ou mais duvidas 
:)brigada pelas dicas
por nada.
disponha…
carregar as informações em frames(JInternalFrame, JDialog, JFrames) e nao manipular nas tabelas sempre é a melhor opção (lembre de nao deixar alterar dados diretamente na tabela), alem de ficar mais bonito, apresentavel, profissional e facil aprendizagem por parte do usuario
import javax.swing.JDialog;
public class DadosQueSeraoAlteradosnaJtable extends JDialog{
private static final long serialVersionUID = 1L;
public DadosQueSeraoAlteradosnaJtable() {
super();
setModal(true);
setSize (500,400);
setVisible (true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE );
setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
setResizable(true);
}
}
agora vc cria os campos que vc modificava na tabela nesse JDialog, e altera os dados nele, depois deleta a linha selecionada e coloca os novos dados
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class DadosQueSeraoAlteradosnaJtable extends JDialog implements ActionListener{
private static final long serialVersionUID = 1L;
JButton b,b1,b2,b3;
Connection conexao;
Statement comando;
ResultSet resultado;
private String observacao,atv1,atv2,atv3,atv4,atv5,atv6;//atributos para trocar na tabela
private double nota;//atributos para trocar na tabela
public DadosQueSeraoAlteradosnaJtable() {
super();
setModal(true);
this.setTitle("Confirmação de alterações de dados");
this.setLayout(null);
b=new JButton("Salvar");
b1=new JButton("Cancelar");
b.setBounds (30, 120, 90, 25);
b1.setBounds (180, 120, 90, 25);
b.addActionListener(this);
b1.addActionListener(this);
add(b);add(b1);
try {
conexao = conecta.conectabanco();
comando = conexao.createStatement();
} catch (Exception x) {
JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
}
b.addActionListener (new ActionListener (){
public void actionPerformed (ActionEvent e){
}});
b1.addActionListener (new ActionListener (){
public void actionPerformed (ActionEvent e){
}});
this.setSize (500,400);
this.setVisible (true);
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE );
this.setResizable(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
agora que vc altero os dados no JDialog e no banco so precisa alterar na tabela
ola,
ah para pegar a linha selecionada da jtable que esta na outra classe pensei no seguinte método
public void linhaSelecionadaDaJtable()
{
//crio um objeto da classe onde esta a tabela
TelaDeInsercaoDeNotas tela=new TelaDeInsercaoDeNotas();
//atraves deste obj pego o painel onde a table esta sendo add
Component[] components = tela.painel.getComponents();
for (Component component : components) {
if ( component instanceof JTable ) {
System.out.println("tem jtable");
}
else
{
System.out.println("não contem jtable");
}
//so entra no else:/
}
}
só entra no else isso é pq eu to criando a jtable num metodo e chamando num botão?pq eu declaro ela no inicio da minha classe…
eu entendi errado?era para eu ter feito tudo a mesma tela?
mto obg 
Aparentemente vc esta instanciado outro Form, ou seja, esta em branco.
Aparentemente vc esta instanciado outro Form, ou seja, esta em branco.
faça o seguinte
modifique seu construtor
public DadosQueSeraoAlteradosnaJtable(JInternalFrame seuFrame//ou o tipo de objeto da sua tela que tem a tabela) {
this.seuFrame = seuFrame; // lembre de criar um seuFrame acima, mas nao instancia-lo
na tela que vc tem a jtable faz os getS dos dados que vc quer no seu JDialog
dai no seu dialog vc faz isso
dai joga para seu JTextField
para retornar os dados para sua tela com tabela
sentando como linha o tabela.getSelectedRow();
obrigada por toda ajuda mas agora não será mais necessário o uso da jtable para isto a minha idéia com botões foi aceita!
tu até ja me ajudou nesta tela http://www.guj.com.br/java/237541-salvar-texto-do-joptionpaneresolvido ,lembra?
vou voltar a utilizar a versão antiga da tela devido a maneira dos itens estarem salvos no banco e do jeito que tenho q jogar na tela tipo eu teria q fazer uma matriz enorme para pegar os itens do banco e depois jogar na tela e quanto maior a quantidade de dados maior seria o tempo das pesquisas!
obg
