2009-10-20 12 views
9

¿Cuál es la diferencia entre el setEditable() y el setEnabled() en un jCombobox? ¿Puede un combobox ser editable pero no habilitado y de otra manera? ¿En qué situación usarías qué método?JCombobox editable habilitado

¿Puedes imaginar una situación en la que harías setEnabled (falso) junto con setEditable (verdadero)?

Respuesta

20

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.

+0

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

1

SetEnable() - Habilita el cuadro combinado para que se puedan seleccionar elementos.

SetEditable() - Determina si el campo JComboBox es editable.

7

Si llama al setEditable(true), el campo de texto de JComboBox se puede editar, lo que le permite al usuario escribir texto con el teclado además de seleccionar un elemento de la lista.

Si llama al setEnabled(false), todo el control se desactiva, lo que impide que el usuario interactúe con él.