Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Kigasu en 1 Diciembre 2007, 14:02 pm



Título: Problema NetBeans...formularios Acoplados
Publicado por: Kigasu en 1 Diciembre 2007, 14:02 pm
Buenas dejo los códigos....recuerden que el netbeans genera codigo por default...el problema que tengo es que al correr los fomrularios, en el segundo que est´en herencia se me acopla el primero :S
Se supone que estoy modulando una Prueba de un Dïa martes de un alumno X que llega a testearla...pero tengo un Acoplamiento con el fomrulario
Código:
/*
 * IngresaCurso.java
 *
 * Created on 29 de noviembre de 2007, 15:14
 */

package mi.pruebamartes;
import java.awt.*;
import javax.swing.*;

/**
 *
 * @author  Wiz
 */
public class IngresaCurso extends javax.swing.JFrame {
    /** Creates new form IngresaCurso */
   int var;
   int calum;
    public IngresaCurso() {
         setLocation(320,250);//(x,y)Posit. desde la esquina izquierda
        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.
     */
    // <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();
        jButton2 = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        cursoTextField = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Prueba Java");
        jLabel1.setText("PRUEBA DE LLAVA N\u00ba3");

        jLabel2.setForeground(new java.awt.Color(51, 51, 255));
        jLabel2.setText("Nicol\u00e1s Bosoni Spinetto");

        jButton2.setText("QUIT");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jLabel3.setText("Ingrese Cantidad de Alumnos:");

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

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup()
                            .addGap(12, 12, 12)
                            .addComponent(jLabel3))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(jButton1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton2))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(cursoTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2))))
                .addContainerGap(36, Short.MAX_VALUE))
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton2});

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cursoTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(12, 12, 12)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton2)
                    .addComponent(jButton1))
                .addGap(23, 23, 23))
        );

        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(23, 23, 23)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(27, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(18, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 149, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        pack();
    }// </editor-fold>                       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            calum = Integer.parseInt(cursoTextField.getText());
            IngreseAsignatura next = new IngreseAsignatura();
            next.setVisible(true);
            this.setVisible(false);
           
    }                                       
    public void pasaVariable(int calum){
        var=calum;
      };
   
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
        System.exit(0);
    }                                       
   
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
   
       java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new IngresaCurso().setVisible(true);
            }
        });
       
    }
   
    // Variables declaration - do not modify                     
    private javax.swing.JTextField cursoTextField;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
   
}

Y este es el que está en herencia

Código:
/*
 * IngreseAsignatura.java
 *
 * Created on 30 de noviembre de 2007, 8:59
 */

package mi.pruebamartes;
import java.awt.*;
import javax.swing.*;

/**
 *
 * @author  Wiz
 */
public class IngreseAsignatura extends IngresaCurso{
    int var;
    /** Creates new form IngreseAsignatura */
    public IngreseAsignatura() {
        setLocation(320,250);//(x,y)Posit. desde la esquina izquierda
        initComponents();
        alumnosLabel.setText(var+" Alumnos");
        this.setVisible(true);
         
    }
     /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                         
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        alumnosLabel = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setText("Total de Alumnos para ingresar: ");

        alumnosLabel.setForeground(new java.awt.Color(204, 0, 51));
        alumnosLabel.setText("Alumnos");

        jLabel2.setText("Cuantas Asignaturas Ingresar\u00e1?");

        jButton1.setText("O.K");

        jButton2.setText("Salir");

        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)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(alumnosLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(jButton1)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jButton2)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                                .addGap(14, 14, 14)))
                        .addContainerGap())
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)
                        .addGap(71, 71, 71))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(alumnosLabel))
                .addGap(15, 15, 15)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addContainerGap(14, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>                       
   
    /**
     * @param args the command line arguments
     */
   public static  void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new IngreseAsignatura().setVisible(true);
                }
        });
 
  }
   
   
    // Variables declaration - do not modify                     
    private javax.swing.JLabel alumnosLabel;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
   
}






Título: Re: Problema NetBeans...formularios Acoplados
Publicado por: egyware en 12 Diciembre 2007, 15:19 pm
no entendi mucho pero creo que ya se tu problema
osea tu quieres que en ingresa curso como sale "A"
y en la clase hija sale "B" y al ejecutarse salga "A+B"
el problema del netbeans es la generacion de los componentes talvez no te quede claro pero te explicare lo mejor posible
cuando tu creas tu objeto b (b es el objeto de la clase hija)
como sabes llama al contructor padre (que seria IngresaCurso)
crea toda su GUI y luego le pasa el mando a la clase hija
cuando la clase hija empieza a construirse borra todo lo anterior y crea su GUI.
exactamente no se donde es pero se que es la ultima parte del codigo donde empiesa a configurar las posiciones dentro el form.
lo que tu puedes hacer es colorcar un panel especial (es tan especial que no haces nada con el,pero debe ser accesible para la clase hija) luego en tu clase hija lo colocas todos tus componentes en un JPanel (diferente al anterior) y al panel especial de la clase padre le agregas el panel de la clase hija
Código
  1. Clase Padre extends /*....*/{
  2. protected JPanel PadrePanel;
  3. Padre (){/*contructor aqui llama initComponent()*/}
  4. }
  5. Clase Hija extends Padre{
  6. private JPanel HijaPanel;
  7. Hija(){
  8. super();
  9. //...algun codigo tuyo
  10. initComponents();/*llama a iniciar los componentes generados automaticamente por el netbeans*/
  11. //...mas codigo tuyo
  12. /*como PadrePanel es protected puedes acceder a el o puedes implementarle un setter/getter*/
  13. PadrePanel.add(HijaPanel);
  14. }
  15.  
bueno algo asi seria
creo que no me entesdiste nada pero si me entiendes haslo

nota: te recomiendo que personalizes el codigo generado por el netbeans lo mas que puedas yo lo hago
como por ejemplo cuando le agrego un icono a un JComponent uso el editor de Icono del netbeans y uso el boton avanzados,chekeo preinit, post codey le coloco esto
pre  init
//aqui cargo mi icono como me da la gana con un vector de iconos icon.get(x), un
//hastable ht.get(keyincon), etc...
/*
post
*/
lo que hago es anular la sentencia generado por el netbeans y poner una mia pero el JComponent igual lo veo con la imagen que corresponde

xauuu suerte


Título: Re: Problema NetBeans...formularios Acoplados
Publicado por: Kigasu en 12 Diciembre 2007, 23:46 pm
Muchissimas gracias, ya lo resolví finalmente creee la clase y lo realizé por separado funcionó mucho mejor, y ya no se acomplan. Sobre modificar los mismos componentes bueno en netbeans al menos dice que no son modificalbes, pero sí los pasé a otra clase y lso modifiqué y los hice a mi gusto, muchissimas gracias =)