Pessoal bom dia!
Minha dúvida é o seguinte possuo um Jframe onde possuo uma Jtable e vários Jtextfield, ao clicar no botão salvar ele pega os dados dos jtextfield e grava no banco e atualiza minha Jtable através do meu metodo salvar implementado na minha classe SubestacaoUpdateTable que extend AbstractTableModel, até aí tudo bem o problema é o seguinte - quero criar um metodo atualizar na minha classe SubestacaoUpdateTable para que ao clicar no botão salvar atualize minha Jtable somente o campo que estou alterando e não crie uma nova linha na Jtable.
public class SubestacaoUpdateTable extends AbstractTableModel {
private List<Subestacao> subestacao;
public SubestacaoUpdateTable()
{
subestacao = new ArrayList<Subestacao>();
}
public SubestacaoUpdateTable (List<Subestacao> lista)
{
this();
subestacao.addAll(lista);
}
public int getRowCount() {
return subestacao.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Subestacao s = subestacao.get(rowIndex);
if (columnIndex == 0){
return s.getId();
} else if (columnIndex == 1){
return s.getGerencia();
} else if (columnIndex == 2){
return s.getSigla();
} else if (columnIndex == 3) {
return s.getSubestacao();
}
return "";
}
@Override
public String getColumnName ( int column){
if (column == 0){
return "id";
} else if (column == 1){
return "Gerencia";
} else if (column == 2) {
return "Sigla";
} else if (column == 3 ) {
return "Nome da SE";
}
return "";
}
@Override
public Class getColumnClass ( int columnIndex){
if (columnIndex == 0) {
return Integer.class;
} else if (columnIndex == 1) {
return String.class;
} else if (columnIndex == 2) {
return String.class;
} else if (columnIndex == 3) {
return String.class;
}
return String.class;
}
@Override
public void setValueAt (Object aValue, int rowIndex, int columnIndex){
Subestacao s = subestacao.get(rowIndex);
if (columnIndex == 1){
s.setGerencia(aValue.toString());
} else if (columnIndex == 2){
s.setSigla(aValue.toString());
} else if (columnIndex == 3) {
s.setSubestacao(aValue.toString());
}
fireTableDataChanged();
}
@Override
public boolean isCellEditable (int rowIndex, int columnIndex){
return true;
}
public void salvar (Subestacao s){
subestacao.add(s);
fireTableDataChanged();
}
public void update ()
{
fireTableDataChanged();
}
Segue o Jframe
public class SubestacaoView extends javax.swing.JFrame {
/** Creates new form Jequipamento */
public SubestacaoView() {
initComponents();
idTf.setVisible(false);
idTf.setText("");
gerenciaCb.setEnabled(false);
nomeSeTf.setEnabled(false);
siglaTf.setEnabled(false);
salvarBt.setEnabled(false);
cancelarBt.setEnabled(false);
excluirItem.setEnabled(false);
modelo = new SubestacaoUpdateTable(lista);
jTable1.setModel(modelo);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
nomeSeTf = new javax.swing.JTextField();
gerenciaCb = new javax.swing.JComboBox();
siglaTf = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel2 = new javax.swing.JPanel();
novoBt = new javax.swing.JButton();
cancelarBt = new javax.swing.JButton();
editarItemBt = new javax.swing.JButton();
excluirItem = new javax.swing.JButton();
retornarBt = new javax.swing.JButton();
salvarBt = new javax.swing.JButton();
idTf = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(34, 172, 235), 2, true), "Dados da Subestação", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 14), new java.awt.Color(34, 172, 235))); // NOI18N
jLabel1.setFont(new java.awt.Font("Arial", 0, 14));
jLabel1.setText("Nome da SE:");
jLabel2.setFont(new java.awt.Font("Arial", 0, 14));
jLabel2.setText("Gerência:");
nomeSeTf.setFont(new java.awt.Font("Arial", 0, 14));
gerenciaCb.setFont(new java.awt.Font("Dialog", 0, 14));
gerenciaCb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Jupiá", "São Paulo" }));
jLabel3.setFont(new java.awt.Font("Dialog", 0, 14));
jLabel3.setText("Sigla:");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(siglaTf, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
.addComponent(jLabel2)
.addGap(29, 29, 29)
.addComponent(gerenciaCb, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(nomeSeTf, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(nomeSeTf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(gerenciaCb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(siglaTf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(17, Short.MAX_VALUE))
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(253, 20, 17), 2, true), "ITENS das Subestações", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 14), new java.awt.Color(253, 20, 17))); // NOI18N
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
jScrollPane1.setViewportView(jTable1);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2.setBackground(new java.awt.Color(165, 183, 216));
jPanel2.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(45, 28, 178), 2, true));
jPanel2.setForeground(new java.awt.Color(9, 9, 9));
novoBt.setFont(new java.awt.Font("Dialog", 1, 14));
novoBt.setText("Cadastrar");
novoBt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
novoBtActionPerformed(evt);
}
});
cancelarBt.setFont(new java.awt.Font("Dialog", 1, 14));
cancelarBt.setText("Cancelar");
cancelarBt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelarBtActionPerformed(evt);
}
});
editarItemBt.setFont(new java.awt.Font("Dialog", 1, 14));
editarItemBt.setText("Editar Item");
editarItemBt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editarItemBtActionPerformed(evt);
}
});
excluirItem.setFont(new java.awt.Font("Dialog", 1, 14));
excluirItem.setText("Excluir Item");
retornarBt.setFont(new java.awt.Font("Dialog", 1, 14));
retornarBt.setText("Retornar");
retornarBt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
retornarBtActionPerformed(evt);
}
});
salvarBt.setFont(new java.awt.Font("Dialog", 1, 14));
salvarBt.setText("Salvar");
salvarBt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
salvarBtActionPerformed(evt);
}
});
idTf.setText("jTextField1");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(editarItemBt, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(cancelarBt, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(novoBt, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(excluirItem, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(retornarBt, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(salvarBt, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
.addComponent(idTf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(novoBt, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(cancelarBt, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(editarItemBt, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(excluirItem, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(idTf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 70, Short.MAX_VALUE)
.addComponent(salvarBt, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(retornarBt, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-642)/2, (screenSize.height-511)/2, 642, 511);
}// </editor-fold>
private void novoBtActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
salvarBt.setEnabled(true);
gerenciaCb.setEnabled(true);
nomeSeTf.setEnabled(true);
siglaTf.setEnabled(true);
cancelarBt.setEnabled(true);
novoBt.setEnabled(false);
editarItemBt.setEnabled(false);
}
private void cancelarBtActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
siglaTf.setText("");
nomeSeTf.setText("");
salvarBt.setEnabled(false);
cancelarBt.setEnabled(false);
siglaTf.setEnabled(false);
gerenciaCb.setEnabled(false);
nomeSeTf.setEnabled(false);
novoBt.setEnabled(true);
editarItemBt.setEnabled(true);
idTf.setText("");
}
private void retornarBtActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void editarItemBtActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
novoBt.setEnabled(false);
nomeSeTf.setEnabled(true);
siglaTf.setEnabled(true);
gerenciaCb.setEnabled(true);
cancelarBt.setEnabled(true);
int linha = jTable1.getSelectedRow();
System.out.println("linha " + linha);
lista.get(linha);
System.out.println("lista " + lista.get(linha));
String sigla = lista.get(linha).getSigla();
String gerencia = lista.get(linha).getGerencia();
String nome = lista.get(linha).getSubestacao();
int id = lista.get(linha).getId();
idTf.setText(String.valueOf(id));
nomeSeTf.setText(nome);
siglaTf.setText(sigla);
gerenciaCb.setSelectedItem(gerencia);
editarItemBt.setEnabled(false);
salvarBt.setEnabled(true);
}
private void salvarBtActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String id = idTf.getText();
SubestacaoDao dao = new SubestacaoDao();
Subestacao sub = lerDadosTela();
if (sub != null){
System.out.println("Entrou no primeiro if do salvar");
dao.salvar(lerDadosTela());
if (idTf.getText().isEmpty() == true){
modelo.salvar(lerDadosTela());
lerDadosTela();
cancelarBtActionPerformed(evt);
idTf.setText("");
} else {
método que quero criar -> modelo.update(lerDadosTela());
}
} else {
System.out.println("Erro digite os dados");
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SubestacaoView().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton cancelarBt;
private javax.swing.JButton editarItemBt;
private javax.swing.JButton excluirItem;
private javax.swing.JComboBox gerenciaCb;
private javax.swing.JTextField idTf;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField nomeSeTf;
private javax.swing.JButton novoBt;
private javax.swing.JButton retornarBt;
private javax.swing.JButton salvarBt;
private javax.swing.JTextField siglaTf;
// End of variables declaration
private SubestacaoUpdateTable modelo;
private List<Subestacao> lista;
private Subestacao lerDadosTela(){
Subestacao sub = null;
String gerencia = (String) gerenciaCb.getSelectedItem();
String nome = nomeSeTf.getText();
String sigla = siglaTf.getText();
String id = idTf.getText();
if (!nome.isEmpty() && !sigla.isEmpty() && !gerencia.isEmpty() && !id.isEmpty()){
sub = new Subestacao(Integer.parseInt(id),gerencia, sigla, nome);
System.out.println("Entrou no primeiro if lerdados" + sub + id);
} else {
sub = new Subestacao( gerencia, sigla, sigla);
System.out.println("Entrou no segundo if lerdados" + sub + id);
}
return sub;
}