In Java Swing come si può gestire un elenco di quadri che permettono pannelli multipli di essere selezionati?

StackOverflow https://stackoverflow.com/questions/378161

  •  22-08-2019
  •  | 
  •  

Domanda

Sto lavorando su un app in-house che traccia un mucchio di compiti. Volevo avere un semplice monitor di compito che sarebbe elencare il nome di attività e lo stato del task. Ho bisogno di questo per cercare solo un bel po ', io non sono un progettista per cui qualunque cosa che faccio è andare a succhiare, ma un display testo di base non funziona per i requisiti di progetto.

Quello che sto essenzialmente cercando di fare è mostrare qualcosa di simile al Firefox finestra di download, le I-Tunes finestra di download, e ben mi sapeva dare un nome più, ma sembrano tutti fondamentalmente la stessa. In ciascuna di queste applicazioni, ciascuno dei ‘Pannelli di progresso’ è selezionabile. Quindi, per implementare questo ho pensato che sarebbe stato semplice per utilizzare solo una lista di JPanels ognuno con un JProgressBar e JLabel, ognuno dei quali può solo accettare attenzione per determinare se esso e gli altri sono selezionati. Ho pensato che questo sarebbe stato un compito facile, ma se io uso un JList solo visualizza il testo. Poi ho solo pensato vorrei mostrare tutti i pannelli di attività in un pannello più grande, ma non riesco a ottenere i pannelli interni di riconoscere messa a fuoco.

C'è un modello per questo? C'è una soluzione standard di laminati che ho appena non ho trovato? O c'è un metodo migliore per fare questo? Non voglio di re-inventare la ruota, ma ho pensato che questo stava per essere semplice.

È stato utile?

Soluzione

E 'suona come quello che si può essere cercate è un JList .

È possibile aggiungere le voci ai JList di aggiungendo prima il vostro "compito" al dell'oggetto JList ListModel (vedere la Creazione di un modello sezione dal Java Tutorial), e poi si vorrà assegnato un personalizzato ListCellRenderer che accettare la sua 'compito' e rendere il JList come JPanel nella lista stessa. La chiave qui è quello di rendere il vostro ListCellRenderer personalizzato in grado di visualizzare il "compito" nel JList modo in cui si vuole avere mostrare sul JList.

Date un'occhiata al rel="noreferrer"> dal come utilizzare gli elenchi pagina di Java Tutorial. Essa descriverà come rendere il vostro ListCellRenderer personalizzato in modo da poter rappresentare il vostro "compito", come tutto quello che vuoi.

Per farla breve, si attuerà il ListCellRenderer interfaccia implementando getListCellRendererComponent che restituirà un Component che è la rappresentazione del vostro compito nella JList. Probabilmente si vorrà a uno costruire o un'istanza per il JPanel in questo metodo e restituirlo come Component.

Altri suggerimenti

Il modo standard di fare questo genere di cose è quello di usare JTable (o JList) come contenitore.

Non è necessario usare renderes predefinite fot celle della tabella, ma è possibile specificare il proprio renderer per cellule specifiche. Date un'occhiata a CellRenderer

Come circa (da selezionare quale è possibile impostare per consentire più righe) un JTable con JPanel interna occupante la singola cella di ogni riga, che contiene un JProgressBar e JLabel. Oppure si potrebbe usare un JList con la stessa struttura che ho appena descritto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top