codice:
public class JSearchElement extends JPanel implements ActionListener {
	private JLabel jlabel;
	private JComboBox joperator;
	private JTextField jvalue;
	private JTextField jvalueCompreso;
	
	
	/**
	 * Costruisce il componente
	 * @param label Etichetta del campo
	 * @param operators Operatore di confronto
	 */
	public JSearchElement(String label, Vector operators, boolean secondaCasella) {
		super();
		GridBagLayout grigliaAvanzata = new GridBagLayout();
		GridBagConstraints c = new GridBagConstraints();
		setLayout(grigliaAvanzata);
		c.fill = GridBagConstraints.HORIZONTAL;
		c.anchor = GridBagConstraints.EAST;
		c.insets = new Insets(5, 5, 5, 5);
		// etichetta
		impostaPosizioneComponente(c, 0, 0, 0);
		jlabel = new JLabel(label);
		grigliaAvanzata.setConstraints(jlabel, c);
		add(jlabel);
		// operatore
		impostaPosizioneComponente(c, 1, 0, 0);
		joperator = new JComboBox(operators);
		grigliaAvanzata.setConstraints(joperator, c);
		joperator.addActionListener(this);
		add(joperator);
		// casella di testo
		impostaPosizioneComponente(c, 2, 0, 80);
		jvalue = new JTextField();
		grigliaAvanzata.setConstraints(jvalue, c);
		add(jvalue, c);
		// casella di testo aggiuntiva se l'operatore scelto è compreso
		if (secondaCasella){
			impostaPosizioneComponente(c, 3, 0, 80);
			jvalueCompreso = new JTextField();
			grigliaAvanzata.setConstraints(jvalueCompreso, c);
			jvalueCompreso.setVisible(false);		
			add(jvalueCompreso, c);
		}
			
	}	
	
	
	/**
	 * Imposta la posizione di ogni componente all'interno del layout
	 * @param gbc
	 * @param gx
	 * @param gy
	 * @param padding
	 */
	private void impostaPosizioneComponente(GridBagConstraints gbc, int gx, int gy, int padding) {
		gbc.gridx = gx;
		gbc.gridy = gy;
		gbc.ipadx = padding;
	}
	
	
	
	/**
	 * Imposta l'etichetta
	 * @param label Etichetta
	 */
	public void setLabel(String label){
		
	}
	
	
	/**
	 * Restituisce il valore inserito nella casella di testo
	 * @return Contenuto casella di testo
	 */
	public String getValue(){
		return jvalue.getText();
	}
	
	
	/**
	 * Restituisce il valore inserito nella casella di testo
	 * @return Contenuto casella di testo
	 */
	public String getValueCompreso(){
		return jvalueCompreso.getText();
	}
	
	
	/**
	 * Imposta il valore della casella di testo
	 * @param value Contenuto per la casella di testo
	 */
	public void setValue(String value){
		this.jvalue.setText(value);
	}
	
	
	/**
	 * Restituisce l'operatore selezionato
	 * @return 
	 */
	public Object getSelectedOperator(){
		return joperator.getSelectedItem();
	}
	
	
	/**
	 * Cambia la visibilità della casella di testo aggiuntiva a seconda della scelta dell'operatore
	 *
	 */
	public void changeTextFieldVisible(){
		if (joperator.getSelectedItem().equals("Compreso")){
			jvalueCompreso.setVisible(true);
		}
		else
			jvalueCompreso.setVisible(false);
	}


	/**
	 * Gestisce l'evento di selezione della voce della combo operatore
	 */
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == joperator){
			changeTextFieldVisible();
		}
		
	}
}

La classe viene richiamata da un JDialog.