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.