Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78

    [JAVA] problema con il focus in una JList

    ciao a tutti.

    Io visualizzo una JList in una JWindow.
    Ora vorrei che quando schiacchio le frecce "Up" e "Down" sulla tastiera venga cambiato l'elemento selezionato nella JList. A quanto ne so la cosa dovrebbe essere automatica, però non funziona (la JList non reagisce ai miei eventi). Il problema credo sia dato dal fatto che il la mia JList non ha il focus, che appartiene invece a un altro componente.

    Qualcuno ha idea di come faccio a risolvere il problema?

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Il focus in java è questione spinosa. Puoi provare con l'invocare un requestFocus() sulla JList appena hai finito di disegnare tutti componenti ed elementi del tuo Container e l'hai reso visibile.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    grazie per la risposta, in effetti avevo già provato ma senza risolvere il problema purtroppo...

    adesso ho notato che sostituendo la JWindow con un JFrame funziona correttamente... però non è una gran soluzione... adesso vedo che fare...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Attenzione che una JWindow è un contenitore un po' particolare... nel senso che è proprio il minimo indispensabile per mostrare qualcosa a video. Non ha "maniglie" a cui appiccicare eventi "banali", come la chiusura. Se non vuoi ottenere effetti particolari, tipo splash screen o simili, ti consiglio di utilizzare JFrame che è il diretto discendente di JWindow ed implementa di suo alcune cose che semplificano la vita.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    si ma infatti di base devo solo poter mostrare la JList e permettere all'utente di scegliere un'entry nella JList, nulla di più.

    Tornando alla tua risposta di prima, dovrei fare qcs del genere:
    creo JList
    creo JWindow
    aggiungo JList a JWindow
    rendo JWindow visible
    rendo JList visible
    chiedo il focus sulla Jlist

    oppure sbaglio qcs?

    grazie di nuovo...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    quello è l'ordine. Non è però detto che riceva il focus... nè che senta gli eventi via tastiera per le ragioni di cui sopra.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    ok. ti faccio ancora una domanda:

    a me non va bene utilizzare un JFrame x 2 motivi:
    - viene visualizzata l'icona del JFrame nella barra di avvio
    - sopra la mia Jlist c'è una barra orizzontale (dove c'è anche la 'x' per chiudere il frame) che non voglio.

    Non c'è un altro componente 'migliore' della JWindow che posso utilizzare al posto del JFrame?

    Di nuovo grazie...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    senza bordi ne niente, non credo proprio. Non ti resta che implementare tutti i listeners del caso per gestire gli eventi su JWindow e JList.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    78
    Originariamente inviato da Andrea1979
    senza bordi ne niente, non credo proprio. Non ti resta che implementare tutti i listeners del caso per gestire gli eventi su JWindow e JList.
    Eh sì ci avevo pensato anch'io. Però anche qui ho un problema che non riesco a risolvere.
    Gli eventi vengono sì gestiti correttamente dalla mia JWindow/JList ma vengono anche trattati dal componente che ha il focus. Dovrei fare in modo di disattivare gli eventi su questo componente ma nn sono ancora riuscito a capire come...

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    no, questo è un problema di implementazione: puoi avere più listeners dello stesso tipo, ma personalizzati per ogni componente a cui vai ad attaccarlo.

    Chiaro che se fai
    codice:
    public class myJWindow extends JWindow implments ActionListener {
      public void actionPerformed (ActionEvent ae) {
      // codice
      }
    }
    e attacchi a tutti i bottoni quell'actionListener (.addActionListener(this)) che è quello della classe, tutti i componenti si comporteranno di conseguenza... a meno che di non diversificare (con un if sul source dell'evento) nel actionPerformed
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.