Laf-Widget - documentation
Author: laf-widget.dev.java.net
Description: Laf-Widget
Keywords: java, look, feel, skins, plaf, swing, ui, pluggable, widget

# Laf-Widget client properties

View all client properties.

Client property name | LafWidget.COMBO_BOX_USE_MODEL_ONLY
Description | Client property name for specifying that the editable combobox can accept only entries from the model. This property can be set either on a single combobox or globally on `UIManager`. The value in both cases should be either `Boolean.TRUE` or `Boolean.FALSE`.
See also | COMBO_BOX_NO_AUTOCOMPLETION client property.
Sample code | `import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import org.jvnet.lafwidget.LafWidget; import org.jvnet.substance.SubstanceLookAndFeel; /** * Test application that shows the use of the * {@link LafWidget#COMBO_BOX_USE_MODEL_ONLY} client property. * * @author Kirill Grouchnikov * @see LafWidget#COMBO_BOX_USE_MODEL_ONLY */ public class ComboBoxUseModelOnly extends JFrame { /** * Creates the main frame for <code>this</code> sample. */ public ComboBoxUseModelOnly() { super("Combobox auto-completion from model"); this.setLayout(new BorderLayout()); final JComboBox cb = new JComboBox(new Object[] { "Ester", "Jordi", "Jordina", "Jorge", "Sergi" }); cb.setEditable(true); JPanel main = new JPanel(new FlowLayout(FlowLayout.CENTER)); this.add(main, BorderLayout.CENTER); main.add(cb); JPanel controls = new JPanel(new FlowLayout(FlowLayout.RIGHT)); final JCheckBox modelOnlyAutoCompletion = new JCheckBox( "Auto-completion from model only"); modelOnlyAutoCompletion.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cb.putClientProperty(LafWidget.COMBO_BOX_USE_MODEL_ONLY, modelOnlyAutoCompletion.isSelected() ? Boolean.TRUE : null); } }); controls.add(modelOnlyAutoCompletion); this.add(controls, BorderLayout.SOUTH); this.setSize(400, 200); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * The main method for <code>this</code> sample. The arguments are * ignored. * * @param args * Ignored. * @throws Exception * If some exception occured. Note that there is no special * treatment of exception conditions in <code>this</code> * sample code. */ public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(new SubstanceLookAndFeel()); JFrame.setDefaultLookAndFeelDecorated(true); SwingUtilities.invokeLater(new Runnable() { public void run() { new ComboBoxUseModelOnly().setVisible(true); } }); } }` The screenshot below shows an editable combo when this property is not installed. On typing "Es", the "Ester" entry is selected: Now, if you press "f", the "ter" is replaced by "f" - the combo allows selecting an entry which is not present in the model ("Esf"): After this property has been installed, pressing "f" has no effect - "Ester" is still the selected entry: