Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361

    Effetto "hover" JButton/JLabel

    Ciao a tutti,

    Nella mia applicazione swing uso due tipi di pulsante per i quali vorrei implementare l'effetto hover,cioè modificare l'aspetto del pulsante quando il mouse entra/esce dal componente.

    In particolare per i pulsanti testuali (che hanno questo aspetto: TestoPulsante ) voglio cambiare il colore del testo a seconda che il mouse sia o no al di sopra del componente, per i pulsanti con un'icona voglio invece scambiare tra di loro un'icona che indica lo stato attivo e un'altra che indica lo stato disattivo.
    Per tutti e due i pulsanti poi imposto il cursore a manina quando entro sul componente.

    Nel MouseListener che aggiungo ai pulsanti faccio quindi qualcosa del genere:

    codice:
    ......
    public void mouseEntered(MouseEvent e)
       {
            Component c=e.getComponent();
            c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
            // ovviamente ogni oggetto MyJButton ha due icone che scambio in base al parametro 
            // che passo al metodo changeIcon
            if(c instanceof MyJButton)(MyJButton(c)).changeIcon(true);
            else ((JLabel)c).setForeground(Color.RED);
        }
    public void mouseExited(MouseEvent e)
       {
            Component c=e.getComponent();
            c.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            if(c instanceof MyJButton)(MyJButton(c)).changeIcon(false);
            else ((JLabel)c).setForeground(Color.GREEN);
        }
    ......
    Vi vengono idee migliori per gestire l'entrata/uscita del mouse sul singolo componente?

    Assumendo che questa strada sia accettabile ho un altra perplessità: alcuni bottoni possono essere richiamati anche con la pressione di un tasto sulla tastiera (ho registrato un KeyListener su questo genere di pulsanti), e voglio dare all'utilizzatore la sensazione di aver comunque premuto tale bottone, settandoci per un certo periodo l'icona sullo stato attivo e poi rimettendola allo stato disattivo.

    Pensavo quindi di richiamare un metodo all'interno della classe MyJButton che faccia partire un thread per lo scambio delle icone, qualcosa del genere:

    codice:
    public void changeIcons()
    { new Thread(new Runnable() {
    public void run() {
    try{
    changeIcon(true); Thread.sleep(250); changeIcon(false);
    } catch (InterruptedException e){
    e.printStackTrace();
    }
    }
    }).start();
    }
    Può andare bene come soluzione?

    Grazie a tutti per l'attenzione
    Ultima modifica di Ansharja; 29-01-2016 a 12:10

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.