it-swarm-eu.dev

Seleziona l'elemento da un elenco da aggiungere a un altro elenco

Ho un'applicazione implementata con Java Swing. La vista principale delle applicazioni è divisa in un lato sinistro e un lato destro. La parte superiore del lato destro contiene un SearchField e un elenco di ricerca risultati vengono visualizzati sotto il campo. L'utente cerca gli elementi utilizzando SearchField, quindi l'utente seleziona uno degli elementi nei risultati della ricerca deve essere aggiunto all'elenco a sinistra lato.

Pensa a questo come a un'applicazione in cui l'utente "crea" un ordine dagli elementi che si trovano cercando.

+------------------------+-----------------------+
|                        |      SearchField      |
|                        +-----------------------+
|                        |                       |
|                        |                       |
|                        |                       |
|       List of          |      List of          |
|       added            |      matched          |
|       items            |      items            |
|                        |                       |
|                        |                       |
|                        |                       |
+------------------------+-----------------------+

In che modo l'utente dovrebbe selezionare l'elemento nei risultati della ricerca e aggiungerlo all'elenco di sinistra? Per impostazione predefinita in Java Swing quando ho una JList o JTable gli elementi sono selezionati quando l'utente fa clic su un elemento È stato naturale se ci fosse un pulsante "Aggiungi" per ogni elemento, immagino. Ma devo fare qualche soluzione se dovesse funzionare così in Java Swing. "Aggiungi "un elemento facendo doppio clic funzionerebbe, ma non è così intuitivo. Selezionare un elemento e quindi premere Invio non è neanche così intuitivo.

Ma se avessi implementato questo come un'applicazione Web, sarebbe stato naturale avere un link "Aggiungi" per ogni elemento nell'elenco dei risultati della ricerca.

Come devo risolvere questo problema di usabilità? È meglio avere un pulsante "Aggiungi" per ogni elemento o esiste una soluzione più intuitiva? Ritengo che l'interfaccia utente sembrerà "disordinata" se ogni elemento ha un pulsante predefinito, quindi suppongo che dovrei usare un pulsante personalizzato più discreto se un pulsante è la soluzione.

2
Jonas

Ho creato molti di questi tipi di interfacce. Suggerisco come hai detto di avere un pulsante Aggiungi su ciascun elemento e un pulsante Rimuovi dall'elenco degli elementi aggiunti.

Un'altra opzione con cui ho avuto successo è avere pulsanti tra le due caselle con frecce che mostrano la direzione del movimento. Da destra a sinistra <- è Aggiungi e da sinistra a destra -> è Rimuovi.

1
Jeremy

Sono d'accordo che un doppio clic non è rilevabile. Hai detto che facendo clic su un elemento lo seleziona. Perché non posizionare un grande pulsante "AGGIUNGI" nella parte inferiore del pannello di destra, che agirà su tutti gli elementi selezionati? Può essere disabilitato quando non c'è selezione e diventare abilitato dopo aver selezionato un elemento. Premere Invio può essere una scorciatoia da tastiera per il pulsante.

Il pannello di sinistra può avere un pulsante "Rimuovi" che funziona allo stesso modo e posizionato a livello con il pulsante AGGIUNGI.

A proposito, a meno che questa interfaccia non sia per un linguaggio RTL, mi sembra che la direzione del processo di lavoro debba essere invertita - la fonte è di solito a sinistra e il bersaglio a destra.

Inoltre, non so come lo stai gestendo in questo momento, ma per ogni evenienza - a mio avviso, gli elementi aggiunti non dovrebbero scomparire dal pannello di origine (sono ancora i risultati della ricerca, non vanno da nessuna parte ), ma dovrebbe esserci un'indicazione visiva che sono stati aggiunti.

1

Sono d'accordo con Vitaly, un pulsante di aggiunta e rimozione diventa naturale con questo tipo di attività. Se si desidera offrire all'utente più opzioni, abilitare il trascinamento della selezione dal campo di ricerca all'elenco di destinazione. Abilita anche la modifica tramite chiavi, ritorna nella lista di ricerca aggiunge, elimina dalla lista costruita rimuove l'elemento.

A differenza della rimozione di elementi dall'elenco che visualizza i risultati della ricerca, una soluzione migliore sarebbe contrassegnarli (disattivare l'elemento) in questo modo quando un utente esegue una ricerca che include elementi che sono già stati aggiunti all'elenco il risultato è lo stesso come prima ma gli elementi già selezionati sono visibili. Altrimenti due ricerche mostrerebbero due risultati diversi, che potrebbero distrarre alcuni utenti.

1
Harald Scheirich

È anche possibile aggiungere una casella di controllo per ciascuno degli elementi in entrambe le caselle di riepilogo. E fornire 2 pulsanti, Aggiungi (Sposta nell'elenco selezionato) e Rimuovi (Sposta nell'elenco non selezionato). In questo modo è possibile selezionare più elementi contemporaneamente da entrambi gli elenchi e spostarli facilmente. Puoi farlo usando un datagrid e modellalo in modo da sembrare un elenco se lo desideri. Spero che sia di aiuto.

0
Divi

A proposito, ho sviluppato un'alternativa che mostra una casella di riepilogo contenente solo gli elementi selezionati e quindi ha un pulsante a lato o un modo per entrare in una piccola finestra di dialogo simile a una casella a discesa. Nel menu a discesa ci sono quindi un elenco di opzioni insieme a caselle di controllo accanto a loro e una casella di testo di filtro in alto. Questo modello ha funzionato bene per me finora e sposta la modifica dell'elenco su una superficie diversa, consentendo al contempo una semplice visualizzazione delle opzioni selezionate da mostrare solo sulla superficie principale.

Funziona meglio nei casi in cui devi avere multipli di questo tipo di controllo all'interno di una singola UI o se devi usare questo controllo insieme ad altri controlli complessi su una singola superficie. Se il tuo esempio è quello di incapsulare il selettore nella sua finestra di dialogo, probabilmente è più facile andare con il più tradizionale concetto liste doppie.

0
jpierson