Super Filtro?

Boa noite.

Alguem já viu alguma forma melhor de fazer algo similar abaixo ou pronto?

/*

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

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class superFiltroView extends javax.swing.JFrame {

private JPanel container;
private JButton botao;
private JButton bExecutar;

// private Map<String, JButton> dynamicButtons;
private Integer nBotoes, tamaho, altura;
private String nomeBotao;
private String nomeLabel;
private String nomeTextField;
private String nomeComboCampos;
private String nomeComboCondicoes;
private String nomeComboAndOr;
private Class clazzobj;
private String condicoes;
/**
* Creates new form NewJFrame
*/
public superFiltroView(Class clazz) {
initComponents();

    nBotoes = 0;
    setClazzobj(clazz);
}

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

    jButton2 = new javax.swing.JButton();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

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

    jButton1.setText("Executar");
    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()
            .addContainerGap(697, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton1))
            .addGap(43, 43, 43))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(11, 11, 11)
            .addComponent(jButton2)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 247, Short.MAX_VALUE)
            .addComponent(jButton1)
            .addContainerGap())
    );

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

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

    nBotoes++;

    nomeBotao = "Add" + nBotoes.toString();
    nomeLabel = "Campo:" + nBotoes.toString();
    nomeTextField = "Valor";
    nomeComboCampos = "campos";
    nomeComboCondicoes = "condicoes";
    nomeComboAndOr = "andor";

    addButton(nomeBotao);
    addLabel(nomeLabel);
    addComboBox(nomeComboCampos);
    addComboCondicoes(nomeComboCondicoes);
    addTextField(nomeTextField);
    addComboAndOr(nomeComboAndOr);
    

}                                        

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

      Component[] component = getContentPane().getComponents();

      condicoes = "";
       
        // Reset user interface
        int j = 0;
        int x = component.length -1;
    
     for (int i = 0; i < component.length; i++) {
            j = i;

            if (component[i] instanceof JComboBox) {
                JComboBox combo = (JComboBox) component[j];
                String nome = "campos";
                if (combo.getAccessibleContext().getAccessibleName().equals(nome)){
                condicoes += " ";
                condicoes = condicoes + combo.getSelectedItem().toString();
                condicoes += " ";
                }
   
            }
            
                          if (component[i] instanceof JComboBox)   {
                JComboBox combo = (JComboBox) component[j];
                String nome = "condicoes";
                if (combo.getAccessibleContext().getAccessibleName().equals(nome)){
                condicoes = " " + condicoes + combo.getSelectedItem().toString();
                condicoes += " ";
                }
   
            }  
            
                
                if (component[i] instanceof JTextField) {
                JTextField text = (JTextField) component[j];
                String nome = "Valor";
                if (text.getAccessibleContext().getAccessibleName().equals(nome)){
                condicoes =  condicoes + " '" + text.getText() + "'";
                condicoes += " ";
                }
   
            }    
                
             
                   if ((component[i] instanceof JComboBox) && (i < x)){
                JComboBox combo = (JComboBox) component[j];
                String nome = "andor";
                if (combo.getAccessibleContext().getAccessibleName().equals(nome)){
                condicoes = " " + condicoes + combo.getSelectedItem().toString();
                condicoes += " ";
                }
   
            }         
           
          
        }
    
    System.out.print(condicoes);
   
    
}                                        

public void addButton(String name) {
    JButton b = new JButton(name);
    b.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton2ActionPerformed(evt);
        }
    });
    getContentPane().add(b);
    b.setBounds(695, 40 * nBotoes, 80, 32);




}

private void addLabel(String nome) {
    JLabel lbl = new JLabel(nome);
    getContentPane().add(lbl);
    lbl.setBounds(20, 40 * nBotoes, 80, 30);

    if (nBotoes > 1) {

        Component[] component = getContentPane().getComponents();

        Boolean achou = false;
        // Reset user interface
        int j = 0;
        JLabel label = null;
        for (int i = 0; i < component.length; i++) {
            j = i;
            if (component[i] instanceof JLabel) {
                label = (JLabel) component[i];
                achou = true;
            }

            if (component[i] instanceof JComboBox) {
                JComboBox combo = (JComboBox) component[j];
                if (achou) {
                label.setText((String) combo.getSelectedItem());
                }
                achou = false;
            }


        }
    }

}

private void addComboBox(String nome) {
    JComboBox cbx;
    cbx = new javax.swing.JComboBox();
    cbx.setModel(new javax.swing.DefaultComboBoxModel(populaComboCampos()));
    cbx.getAccessibleContext().setAccessibleName(nome);
    getContentPane().add(cbx);
    cbx.setBounds(100, 40 * nBotoes, 160, 30);
}

private void addComboCondicoes(String nome) {
    JComboBox cbx;
    cbx = new javax.swing.JComboBox();
    cbx.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"=", ">", "<", ">=", "<>"}));
    cbx.getAccessibleContext().setAccessibleName(nome);
    getContentPane().add(cbx);
    cbx.setBounds(300, 40 * nBotoes, 60, 30);
}

private void addTextField(String nome) {
    JTextField tfd = new JTextField(nome);
    tfd.setText("");
    tfd.getAccessibleContext().setAccessibleName(nome);
    getContentPane().add(tfd);
    tfd.setBounds(400, 40 * nBotoes, 200, 30);
}

    private void addComboAndOr(String nome) {
    JComboBox cbx;
    cbx = new javax.swing.JComboBox();
    cbx.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"And", "Or"}));
    cbx.getAccessibleContext().setAccessibleName(nome);
    getContentPane().add(cbx);
    cbx.setBounds(600, 40 * nBotoes, 60, 30);
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(superFiltroView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(superFiltroView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(superFiltroView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(superFiltroView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new superFiltroView(OrdemServicoVO.class).setVisible(true);

        }
    });



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

private Object[] populaComboCampos() {
    Collection<String> c = setCamposClazz();

 
   
    return c.toArray();
}

private Collection<String> setCamposClazz() throws SecurityException {
    Class clazz = getClazzobj();
            //OrdemServicoVO.class;
    Collection<String> c = new ArrayList<>();
    for(Field field:clazz.getDeclaredFields()){
               c.add(field.getName());
    }
    return c;
}

/**
 * @return the clazzobj
 */
public Class getClazzobj() {
    return clazzobj;
}

/**
 * @param clazzobj the clazzobj to set
 */
public void setClazzobj(Class clazzobj) {
    this.clazzobj = clazzobj;
}

}

Boa noite …

http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor