setEditable(boolean)
determina si el JComboBox
permite la entrada de texto además de seleccionar un valor mediante el menú desplegable.
setEnabled(boolean)
determina si el JComboBox
puede interactuar en absoluto. Si no está habilitado, se muestra en gris.
A JComboBox
puede tener cualquier combinación de estas propiedades -
setEditable(true)
+ setEnabled(true)
= JComboBox
permite la entrada de texto, además de tirar hacia abajo los valores y el usuario puede interactuar con él.
setEditable(false)
+ setEnabled(true)
= JComboBox
solo permite seleccionar los valores del menú desplegable y el usuario puede interactuar con él.
setEditable(true)
+ setEnabled(false)
= JComboBox
permite la entrada de texto además de valores desplegables pero el usuario no puede interactuar con ella.
setEditable(false)
+ setEnabled(false)
= JComboBox
solo permite seleccionar los valores del menú desplegable y el usuario no puede interactuar con él.
Una situación en la que usted puede tener un JComboBox
con setEnabled(false)
y setEditable(true)
sería la que desea un JComboBox
que permite la introducción de texto, pero la forma es en un estado donde el valor de la JComboBox
no es aplicable. Por lo general, tendría alguna acción que llamaría al setEnabled(true)
en el JComboBox
una vez que sea aplicable.
Por ejemplo, si tiene algo así como un formulario de alojamiento para estudiantes, puede haber una pregunta en el formulario como '¿Necesita un espacio de estacionamiento?' con un JCheckbox
. Hay un JComboBox
para la marca del automóvil y un JTextFied
para el número de matrícula. Puede tener el JComboBox
pre-llenado con las marcas de autos comunes - Ford, Chevy, Toyota, Honda, etc. - pero decide que también quiere permitir que se pueda editar en caso de que alguien posea algo así como un Lamborghini (y se quede en una residencia estudiantil) - Sí claro...). El valor para la marca del automóvil y el número de matrícula no son necesarios a menos que el usuario seleccione el JCheckBox
, lo que significa que necesitan un espacio de estacionamiento.Agregaría un detector al JCheckBox
que llamaría al setEnabled(true)
en JComboBox
y JTextField
cuando se seleccionó, y setEnabled(false)
cuando no lo estaba.
Un JComboBox no editable muestra el elemento seleccionado en el campo, pero la selección no se puede modificar. http://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html#setEditable-boolean- – arley