2012-09-10 26 views
8

Estoy escribiendo una utilidad de escritorio Java en Java swing y tengo una parte mínima de GUI, la mayor parte del trabajo se realiza en el lado del servidor, es decir, back-end. Por lo tanto, no quiero pasar mucho tiempo en la parte de la GUI, aprendiendo diferentes controles y widgets. El problema es que Swing tiene dos controles para (para mí) las mismas tareas, es decir, el menú desplegable y son JComboBox y JSpinner No conozco la diferencia y no quiero ninguna limitación que me impida completar mi tarea después de ' ve seleccionado uno.Diferencia en JComboBox y JSpinner

Tengo que utilizar el menú desplegable para mostrar List<String> devuelto desde DataBase y puede tener tantos como miles de valores. Para evitar que el usuario se desplace, tomaré el alfabeto inicial como entrada o habrá alguna limitación de categoría, por lo que es posible que use valores específicos para mostrar desde List<String>. Quiero que mi programa sea tan eficiente como sea posible y pase menos tiempo en la interfaz, ya que hay muchas operaciones en el back-end.

Cualquier ayuda será muy apreciada

+1

De la wiki de la etiqueta JSpinner: "Aunque los cuadros combinados ofrecen una funcionalidad similar, los rotuladores a veces son preferidos porque no requieren una lista desplegable que pueda oscurecer datos importantes". –

Respuesta

4

He usar desplegable para mostrar la lista de regresar de Base de Datos y puede tener tantos como miles de valores.

  • todas mencionado JComponents se basan en la matriz prematura, tal vez necesite convertir java.util.List a String[] o Vector (depende de sus lógicas de código)

  • ninguno de interfaz gráfica de usuario se designan a helt los miles de valores, tenga en cuenta Paginations for Databases engine

  • anteriormente mencionado AutoComplete JComboBox/JTextField funciona sin ningún problema hasta 2k filas en las computadoras de hoy

  • para la búsqueda o selecciones de matrices que tienen largiest vistazo a Stepped JComboBox (alrededor de dos o más JComboBoxes)

    1.st para la selección reducida de [0-9, A-Z]

    2.nd para la búsqueda en los registros comenzado with A (por ejemplo)

  • redirigir Database eventos para las tareas de fondo y de usar SwingWorker o Runnable#Thread

2

JComboBox adapte a sus necesidades. JComboBox es adecuado para mostrar una lista de valores. JSpinner se usa cuando desea realizar alguna funcionalidad como incerement/decrement en el campo de texto del Spinner.

Este Oracle tutorial explica acerca de JSpinner y sus similitudes con JComboBox. También hay una aplicación de demostración.

4

La diferencia fundamental radica en el modelo: una aplicación SpinnerModel crea una secuencia de valores, mientras que un ComboBoxModel no lo hace. Si los objetos en un SpinnerModel no tienen un orden natural adecuado, tendrá que imponer uno.

En la práctica, "miles de valores" se beneficiarán de un enfoque auxiliar, como se sugiere en @ mKorbel's answer.