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.