En Java swing ¿cómo se puede administrar una lista de cuadros que permitan múltiples paneles para ser seleccionado?
Pregunta
Estoy trabajando en una aplicación en la empresa que realiza el seguimiento de un grupo de tareas. Yo quería tener un monitor tarea sencilla que indique el nombre de la tarea y el estado de la tarea. Necesito esto para mirar un poco agradable, no soy un diseñador así que lo que me va a chupar, pero una pantalla de texto básico no funcionará para las necesidades del proyecto.
Lo que estoy esencialmente tratando de hacer es mostrar algo similar a la ventana de Firefox descarga, los I-Tunes ventana de descarga, y bien podría nombrar más, pero todos se parecen básicamente el mismo. En cada una de estas aplicaciones, cada uno de los paneles de progreso ‘’ es seleccionable. Así que para poner en práctica esto pensé que sería fácil de usar sólo una lista de JPanels cada uno con un JProgressBar y un JLabel, cada uno de los cuales solo se puede aceptar el foco para determinar si se seleccionan y otros. Pensé que esto iba a ser una tarea fácil, pero si uso un JList sólo muestra texto. Yo a continuación, sólo pensé que podría mostrar todos los paneles de tareas en un panel más grande, pero no puedo conseguir los paneles interiores para reconocer el enfoque.
¿Hay un patrón para esto? ¿Hay una solución estándar de laminado que yo no he encontrado? O hay un método mejor para hacer esto? No quiero volver a inventar la rueda, pero pensé que esto estaba a punto de ser simple.
Solución
suena como lo que usted puede estar buscando es un JList
.
Puede añadir sus artículos a los de JList
añadiendo en primer lugar su "tarea" a la del objeto JList
ListModel
(ver la Crear un modelo sección de Los Tutoriales de Java), y luego usted querrá asignado una costumbre ListCellRenderer
que aceptará su 'tarea' y hacer que en el JList
como JPanel
en la propia lista. La clave aquí es hacer que su encargo ListCellRenderer
poder mostrar su "tarea" en el JList
la forma en que desea que se muestre en la JList
.
Tome una mirada hacia el rel="noreferrer"> sección de la Cómo utilizar listas página de los tutoriales de Java. Se describirá cómo hacer que su ListCellRenderer
personalizada para que pueda representar a su "tarea" como cualquier cosa que desee.
Para hacerlo breve, se pondrá en marcha el ListCellRenderer
interfaz mediante la aplicación de la getListCellRendererComponent
que devolverá un Component
que es la representación de su tarea en el JList
. Es probable que desee, ya sea a construir o crear instancias de su JPanel
en este método y lo devuelve como el Component
.
Otros consejos
La forma estándar de hacer este tipo de cosas es utilizar JTable (o JList) como un contenedor.
Usted no tiene que utilizar por defecto renderes fot celdas de la tabla, pero se puede especificar su propio procesador de células específicas. Echar un vistazo a de Celda
¿Qué tal un JTable
(que se puede configurar para permitir que múltiples filas para ser seleccionado) con un JPanel
interno que ocupa la celda individual en cada fila, que contiene una JProgressBar
y una JLabel
. O usted podría utilizar un JList
con la misma estructura que acabo de describir.