Sobrescrevendo metodo private no Netbeans

Ola pessoal, sou novo em java, vamos pegar “leve”, desta forma preciso de ajuda. Parece redudante, mas eu ja perguntei aqui e não tive muitas respostas concretas. Sei que não é uma obrigação mas foruns existem para ajudar os iniciantes, entre outras coisas.

Minha questão é o seguinte: Estou fazendo uma pequena aplicação desktop de cadastro de funcionarios com o Netbeans e Eclipse, tenho um Classe formulario com vários campos para adicionar o funcionario, ao se clicar OK no formulario salva tudo no banco de dados.

Fiz outra classe Modificar extendendo a classe Adicionar para, herdar principalmente o formulario, que funcionou beleza! até preenche os campos com o dados do DB.
O problema começou na hora de chamar o OK, pois não consegui sobrescrever esse método, uma vez que o netbeans não permite mudar, renomear, refactor o modo de acesso private para public para os metodos gerados por ele, já pesquisei muito, não acredito que o netbeans não permite fazer essa mudança crucial, quando peço para override o netbeans so mostra metodos de classes predefinidas como jFrame etc. Foi ae que importei tudo para Eclipse, fiz as mudanças e funcionou muito bem! Mas falta muito pra terminar, como sou mais familiarizado com netbeans, no que diz respeito ao Swing, tenho que usa-lo ate terminar o projeto, ou seja, estou usando as duas IDEs hehehe.

Claro que deve ser macete que não sei logico.

Tem como ou é melhor eu esquecer o Netbeans?

o Netbeans e meio chato mesmo… qdo vc gera a tela por ele, ele não deixa editar o que foi gerado… se quiser ter a liberdade de gerar e depois modificar o que quiser… faça as telas no netbeans e depois edite no eclipse… porem o ruim e que o netbeans gera um codigo muito tosco e sujo…
mas para gerar telas é uma mão na roda, pois não precisa layaoutar as coisas na mão…

Outra coisa do Netbeans é que ele construir o jar, enquanto que no eclipse eu não consegui ainda, parece ser mais complicado.

Crie métodos públicos que são chamados dos eventos dos botões e sobrescreva estes métodos.

Paulobrito não entendi sua colocação :?:

Não sei se entendi bem a questão, mas vou colocar o que eu entendo, é possível modificar o acesso a um botão no netbeans por exemplo,
clicando com o botão direito no botão -> personalizar código -> e na parte inferior da interface vc pode modificar… como bem entender…

se não for isso que vc procurava… posta ai…

@linsspinho

Simplificadamente seria isto:

class Formulario {

  (...)

   private void btOkActionPerformed(java.awt.event.ActionEvent evt) {
      if (confirmaGravacao())
         gravarNoBancoDeDados()
   }   

   public void gravarNoBancoDeDados() {
   }

   (...)
}

class Modificar extends Formulario {

   @Override
   public void gravarNoBancoDeDados() {
      // ação
   }

}

Ou você pode reescrever os métodos clicando com o botão direito no elemento -> propriedades -> código. Nessa janela tem 2 caras importantes: Código pré-inicialização, e Código Pós-Inicialização. Abre o de pré, e reescreve o método que você precisa. :wink:

bom, vou te dizer uma coisa…

o ideal é voce desenvolver um pequeno funcional aplicativo…demonstrando o comportamento…
se quer ajuda… tem que se ajudar… muitas vezes o problema parece ser uma coisa e não é…

faz um exemplo completo e posta… ai…

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • FormTest.java
  • Created on 13/01/2011, 17:28:33
    */

/**
*
*
*/
public class FormTest extends javax.swing.JFrame {

/** Creates new form FormTest */
public FormTest() {
    initComponents();
}

/** 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() {

    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jButton1.setText("jButton1");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(112, 112, 112)
            .addComponent(jButton1)
            .addContainerGap(215, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(90, 90, 90)
            .addComponent(jButton1)
            .addContainerGap(180, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
     gravar();
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new FormTest().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration

public void gravar() {
    System.out.println("gravando...");
}

}
[/code]

[code]public class FormTest2 extends FormTest {

public void gravar(){
    System.out.println("sobrescreve gravar..");
}
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new FormTest2().setVisible(true);
        }
    });
}

}
[/code]

Sobrescrevi o método… não sei se era isso que voce pretendia… usando o netbens…

Olá pessoal, Antes de tudo obrigado a todos por responder, já estava desistindo do forum :).

Ok, esse é o método da classe Adicionar que salva os dados no banco, é esse método que quero sobrescrever na minha classe extendida Modificar, para quando eu clicar, ao inves de “INSERT” no banco ele vai “UPDATE” os dados do form no banco, so que eu só posso sobrescrever se ele for public(ou não? :oops: ) não consigo mudar de private para public quando tento REFACTORING ele dá um error.

Do jeito que suspiro10 falou é interessante mais não mostra essa parte do código, só mostra a inicialização do botão e do evento mais não o método.

    private void salvarDBActionPerformed(java.awt.event.ActionEvent evt) {                                         
              
                       
               String matricula      = this. jTextField8.getText();   //2
               String nome           = this.        Nome.getText();   //3
               String endereco       = this. jTextField3.getText();   //4
               String fone           = this. jTextField5.getText();   //5
               String dataNasc       = this. jTextField7.getText();   //6
               String dataAdmissao   = this.jTextField15.getText();  //7
               String lotadoAtual    = this.jTextField16.getText();  //8
               String lotadoAnterior = this.jTextField17.getText();  //9
               String imagem1        = this.imagem;      

Gente agora que voces voltaram de férias e estão bem energizados, daria pra me ajudar também no outro topico “onde salva imagem” ?

private void salvarDBActionPerformed(java.awt.event.ActionEvent evt) {
}

isso é um método…

se você deseja alterar o método para public, deve fazer como te indiquei, pelo jeito você nem leu o post…
clica com o botão direito do mouse no botão e em ‘personalizar código’ na parte inferior… altera de private para public…

Observa que no exemplo que eu fiz… nem precisei alterar… para sobrescrever…

Você esta enganado sobre o que deseja fazer… o que você posta também não é suficiente para poder dar uma resposta correta…

suspiro10 agradeço muito a sua tentativa de ajudar, mas, vocês não estão lendo as minhas resposta por completo.

Se voce lê tudo direitinho, eu explico pq sua forma não dá certo.

Eu e o suspiro10 demos a mesma resposta, e com certeza funciona. Qual o motivo de ela não te atender? Acho que você não as entendeu.

Em primeiro lugar, você não testou o código que postei… se fizesse entenderia que seu problema provavelmente é outro, agora você quer:

realmente não estou entendendo…

se você não postar mais do código, será impossível entender o que você quer, tente usar somente uma ide, ou netbeans ou eclipse, não misture as duas…

Calma pessoal, está havendo um desencontro de informações.

Estou usando o Netbeans, esqueçam o Eclipse.

O meu codigo já ta quase pronto. Só preciso mudar o modo de acesso(private para public) desse método que coloquei a cima. So não sei mudar isso no Netbeans.

suspiro10 eu fiz o que vc disse:

aparece isso uma janela “personalizar codigo” ---------------------> coloquei uma foto nesse endereço http://www.flickr.com/photos/linsspinho/5354980801/

ae vem “componente” depois vem combobox, depois vem RENOMEAR, logo abaixo vem:

codigo de inicialização

ae tem dois combox com a palavra padrão(default) e ao lado tem esse codigo

[code]

salvarDB = new javax.swing.JButton();

salvarDB.setText(“OK”);

salvarDB.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
salvarDBActionPerformed(evt);
}
});

// Code adding the component to the parent container - not shown here[/code]

lá embaixo como vc disse tem:

“CODIGO DE DECLARAÇÃO DE VARIAVEL”

ae tem esse código:

public javax.swing.JButton salvarDB;

que já está public, mas o metodo nao está.

ae eu pergunto onde está esse?

private void salvarDBActionPerformed(java.awt.event.ActionEvent evt) {


        String cpf     = this.jTextField13.getText();  //1
        String matricula      = this. jTextField8.getText();   //2
        String nome           = this.        Nome.getText();   //3
        String endereco       = this. jTextField3.getText();   //4
        String fone           = this. jTextField5.getText();   //5

tenta fazer o seguinte… duplo clique no private… do private void salvarDBActionPerformed(java.awt.event.ActionEvent evt) deleta e escreve a mão…
porque o IDE ao criar coloca como private… mas você pode alterar…

acredito que você saiba do que estou falando… clique em ‘Codigo Fonte’ … procura o método em questão… apaga ‘private’ e coloca ‘public’ se não funcionar
posta ai…

Não consegui do jeito que vc disse suspiro10, Mas eu fiz uma pergunta diretamente no forum do Netbeans, to no aguardo.

quando me responderem eu coloco aqui.

O que vou tentar é abrir o arquivo em um editor de texto e mudar na “marra”. Não sei se foi isso que vc quis dizer. Por que eu ja tentei tudo. Vou tentar depois que me responderem.

Valeu, Obrigado mesmo!

Não, não foi isso não, no próprio netbeans voce edita o código, somente não pode editar a linha que esta da cor cinza escuro ou azul… estes somente pelo ide como
foi explicado anteriormente…

aqui uma imagem da edição do netbeans

http://picasaweb.google.com/lh/photo/j8tii4hdDGcgEOvNJsTX5g?feat=directlink

o método public void gravar() da imagem… pode ser deletado e reescrito… a mão…

ja o método … private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

tem que ser reescrito pelo ide… como explicado…

pode postar uma imagem do seu método… assim como fiz…