Software Guru Conference & Expo 2014

clase boton para limpiar textfields

saludos...

Estoy iniciando en Java, tengo conocimiento en programacion en otros lenguajes de los cuales no utilizaba clases o muy poco....

estoy iniciando una aplicacion con conocimientos de cero en java, porque quiero aprender a usar este lenguaje que se ve muy interesante, soy programador den Visual Basic, PHP,Visual foxPro, y pues mis programas que tenia hechos en estos lenguajes los quiero crear con java para ir aprendiendo.

hice una forma para el acceso al sistema, primero que nada quise acostumbrarme a trabajar con clases, ya que en los otros lenguajes casi no las uso, y java pues se maneja mas con clases,

Tengo:
una clase principal que es la que arma la forma de acceso al sistema...
una clase extendida de Jframe para crear la ventana
una clase extendida de Jpanel para los contenedores
una clase extendida de JLabel para las etiquetas
una clase extendida de JButton para el boton aceptar
una clase extendida de JButton para el boton cancelar

y dentro de la clase del JFrame creo un objeto JTextfield y Jpasswordfield

cuando presiono el boton aceptar llamo a una clase para que se enlace a una tabla en una base de datos y verifique si los campos son correctos.

Ahora bien cuando presione el boton cancelar necesito que los campos de texto se queden vacios, es aqui donde tengo mi duda, de como pasar parametros al evento click y este a su vez mande llamar un procedimiento donde reciba el nombre del objeto....mi codigo de la clase boton cancelar es el siguiente:

class BotonCancelar extends JButton {
public BotonCancelar(){
super();
}
public BotonCancelar(String title){
super(title);
addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
}
});
}
}

y el codigo donde creo la forma de acceso es la siguiente:

class Acceso extends JFrame implements WindowListener{

public Acceso(){
super();
}
public Acceso(String title){
super(title);
Etiquetas instanciaEtiquetas = new Etiquetas("Usuario:");
Etiquetas instanciaEtiquetas2 = new Etiquetas("Contraseña:");
JTextField textUsuario = new JTextField();
JPasswordField textContrasena = new JPasswordField();
BotonAceptar instanciaBotonAceptar = new BotonAceptar("Aceptar");
BotonCancelar instanciaBotonCancelar = new BotonCancelar("Cancelar");
PanelContendor instanciaPanel = new PanelContendor("",10,50,5,5);
PanelContendor instanciaPanel2 = new PanelContendor("",10,0,5,5);
PanelContendor instanciaPanel3 = new PanelContendor("",10,50,15,10);
PanelContendor instanciaPanel4 = new PanelContendor("",10,10,15,50);

instanciaPanel.add(instanciaEtiquetas);
instanciaPanel.add(instanciaEtiquetas2);

instanciaPanel2.add(textUsuario);
instanciaPanel2.add(textContrasena);

instanciaPanel3.add(instanciaBotonAceptar);
instanciaPanel4.add(instanciaBotonCancelar);

add(instanciaPanel);
add(instanciaPanel2);
add(instanciaPanel3);
add(instanciaPanel4);

setLayout(new GridLayout(0,2));
setSize(300,150);
addWindowListener(this);
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void windowOpened(WindowEvent e) {
centrarVentana();
}
public void windowActivated(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}

private void centrarVentana() {
// Se obtienen las dimensiones en pixels de la pantalla.
Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
// Se obtienen las dimensiones en pixels de la ventana.
Dimension ventana = getSize();
// Una cuenta para situar la ventana en el centro de la pantalla.
setLocation((pantalla.width - ventana.width) / 2,
(pantalla.height - ventana.height) / 2);
}
}

como enlazo estas dos clases para que al presionar el boton cancelar me ponga en blanco los textfields??

Uso Notepad para programar....Me gusta Eclipse como GUI, pero quiero ir aprendiendo sin ninguna GUI ya despues que me familiarice utilizar un GUI como Eclipse, ya una vez lo utilice para programar un poco de JSP.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Subclasitis

No es necesario que hagas subclases de todo. Es un antipatrón. Las clases de JButton y JLabel rara vez necesitan ser subclaseadas porque ya contienen toda la funcionalidad que se requiere para el 99% de los casos; solamente necesitas crear tu propia subclase si vas a agregarle algun comportamiento distinto, porque hasta para dibujar el botón de manera distinta existen otras formas (con Look and Feel) y no necesitas la subclase.

Java no "se maneja más con clases"; Java es 100% orientado a objetos, todo es un objeto en Java (bueno tal vez ahora las anotaciones y enumeradores estarán un poco a discusión pero originalmente todo eran objetos).

Para hacer que tu botón avise a otro objeto cuando lo aprietan, simplemente debes crear un ActionListener y pasarlo al botón; un botón puede tener varios ActionListeners y les avisará a todos cuando sea oprimido. Para limpiar los textfields cuando aprietas otro botón, necesitas simplemente un ActionListener que tenga campos que apunten a los textfields que quieren limpiar y que les mande el setText("") en el método actionPerformed. Lo que necesitas simplemente es "alambrar" los objetos de tu programa. Esto normalmente lo puedes hacer en el método main de la clase principal (que puede ser tu subclase de JFrame). En el main creas la ventana, los actionListeners, conectas todos los objetos y muestras la ventana.

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Imagen de immanriquezc@gmail.com

Gracias por tus sugerencias,

Gracias por tus sugerencias, ya que soy nuevo pues uno se vuelve loco al ver clases y a trabajar con objetos, cuando en visual basic, esta uno mas acostumbrado a trabajar en eventos y puros procesimientos, sin constructures, instancias y otras cosas, y a que todo se hace de manera grafica, aunque se que hay GUI´s para java, pero me interesa aprender el lenguaje sin estos, ya quizas mas adelante que me familiarize con el lenguaje iniciar a trabajar con los GUI´s.

saludos..

Imagen de ezamudio

Teoria OOP

Te recomiendo entonces que leas algo de Programación Orientada a Objetos, pura teoría, y luego ya algo concreto de Java, para que comprendas las diferencias entre programación estructurada y programación orientada a objetos.

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Efectivamente

haber si te sir
ve este programa, te aclaro que el los objetos JTextField estan en las misma clase que el objeto JButton por falta de tiempo lo hice en netbeans

/*
 * ventana.java
 *
 * Created on 8 de febrero de 2009, 08:39 PM
 */

/**
 *
 * @author  Marcos Roberto
 */

public class ventana extends javax.swing.JFrame {

    /** Creates new form ventana */
    public ventana() {
        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() {

        campo1 = new javax.swing.JTextField();
        campo2 = new javax.swing.JTextField();
        campo3 = new javax.swing.JTextField();
        jbtn_Clean = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jbtn_Clean.setText("Limipiar");
        jbtn_Clean.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtn_CleanActionPerformed(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()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(campo3, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(campo2, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(campo1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 221, Short.MAX_VALUE))
                    .addComponent(jbtn_Clean))
                .addContainerGap(169, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(campo1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(campo2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(campo3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(38, 38, 38)
                .addComponent(jbtn_Clean)
                .addContainerGap(156, Short.MAX_VALUE))
        );

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

private void jbtn_CleanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
    campo1.setText(null);
    campo2.setText(null);
    campo3.setText(null);
   
}

    /**
    * @param args the command line arguments
    */

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventana().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField campo1;
    private javax.swing.JTextField campo2;
    private javax.swing.JTextField campo3;
    private javax.swing.JButton jbtn_Clean;
    // End of variables declaration

}

CHIDO MEN

HEY IJA ERES UN AMOR ME ME DESTAPASTES DE UNA DUDA GRANDISIMA, CHIDO MEN DE COMO LIMPIAR LOS CUADRO DE TEXTFIELD. SEGUIMOS EN CONTACTO POR SI ME SURGE MAS DUDAS