Interfaces Swing Dinámicas en Netbeans

miércoles, 19 de mayo de 2010

Hace no mucho he estado desarrollando una aplicación de escritorio en Java, el IDE que habitualmente uso es Netbeans (más bale lo malo conocido...). Cual es mi sorpresa cuando me pongo a diseñar las interfaces con Swing y la herramienta típica de los IDEs drag&drop, resulta que en Netbeans no puedes editar el código que el te genera automáticamente sin perder la edición visual.

Mi problema era el siguiente, mi programa trabaja contra una base de datos y en una de las ventanas el número de radiobuttons que debían cargarse dependía del número de elementos que hubiera en una tabla. Por lo tanto, no podía diseñarlo directamente y luego ir al código a editarlo a mi gusto.

Finalmente, he encontrado una solución y aquí os la dejo para aquellos que os encontréis ante el mismo problema.
Lo primero que hay que hacer es diseñar con Netbeans un JPanel que contenga los elementos que se cargarán dinámicamente, en mi caso eran tres radio buttons, es decir necesitaba X filas de tres radio buttons, asi que diseñe una de las filas en netbeans directamente con el drag&drop, esta clase la he llamado ParameterRadioButtons.
Una vez que tenemos el diseño, necesitamos crear otra clase que herede de JPanel pero en este caso no podemos usar el editor de Netbeans, es decir, generamos una nueva clase Java normal y hacemos que herede de JPanel.

En esta clase lo que debemos hacer es tener una array de objetos de la clase ParameterRadioButtons con tantos objetos como elementos queramos. En la función que inicia (InitComponents) los componentes debemos colocarlos allí donde queramos.

Sigue leyendo para ver el código.




package view;



import javax.swing.GroupLayout;

import javax.swing.JPanel;



public class ParameterRadioButtonsContainerPanel extends JPanel{

    private ParameterRadioButtons[] radiobuttons;



    public ParameterRadioButtonsContainerPanel() {

        super();

        radiobuttons = new ParameterRadioButtons[3];

        initComponents();

    }



    private void initComponents()

    {

        GroupLayout.SequentialGroup groupV;

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

        this.setLayout(layout);



        GroupLayout.ParallelGroup parallelGroupH = layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING);

        GroupLayout.SequentialGroup sequentialGroupV = layout.createSequentialGroup();

        for(int i=0;i<3;i++) {

            radiobuttons[i] = new ParameterRadioButtons();



            GroupLayout.ParallelGroup groupH = parallelGroupH.addComponent(radiobuttons[i]);

            layout.setHorizontalGroup(groupH);

     

            groupV = sequentialGroupV.addComponent(radiobuttons[i]);

            layout.setVerticalGroup(groupV);

        }

    }



    public ParameterRadioButtons[] getRadiobuttons() {

        return radiobuttons;

    }



    public void setRadiobuttons(ParameterRadioButtons[] radiobuttons) {

        this.radiobuttons = radiobuttons;

    }

}


Artículos relacionados


Comments

No response to “ Interfaces Swing Dinámicas en Netbeans ”
Post a Comment | Enviar comentarios ( Atom )

Publicar un comentario

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.