Método atualizar para classe que extend AbstractTableModel

0 respostas
L

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;
    }
Criado 25 de setembro de 2011
Respostas 0
Participantes 1