Visualizzazione dei risultati da 1 a 2 su 2

Discussione: problema JButton

  1. #1

    problema JButton

    ciao a tutti,
    devo fare una scacchiera per un progetto, per ora tutto bene, è quasi finita, volevo però abbellirla.
    in pratica volevo fare che, una volta cliccato su un pezzo le caselle(che sono JButton) sulle quali può spostarsi abbiano il bordo colorato di verde ad esempio, per intenderci il bordo che si evidenzia quando ci si passa sopra col mouse,
    volevo sapere se ci fosse qualche metodo per fare questo
    grazie mille

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Puoi registrare un MouseListener sui pulsanti. Al verificarsi dell'evento mouseEntered() verifichi se quella casella è accettabile o meno (in base alla tua logica, ovviamente). Se lo è imposti il bordo a verde. Poi al verificarsi di un mouseExited() rimetti le cose a posto.


    codice:
    class PezzoListener extends MouseAdapter {
       @Override
       public void mouseEntered(MouseEvent me) {
          JButton cmd = (JButton) me.getSource();
          if ( posizioneAccettabile(cmd) ) {   // Metodo che verifica se i pulsante passato è accettabile secondo la logica del programma
             cmd.setBorder( BorderFactory.createLineBorder(Color.GREEN, 2) );
          }
       }
    
       @Override
       public void mouseExited(MouseEvent me) {
          ((JButton) me.getSource()).setBorder( borderDeafult );
       }
    }
    ...
    private Border borderDefault;   // bordo di default dei pulsanti (va memorizzata alla creazione di un pulsante)
    private PezzoListener listener;   // Un listener per tutti i pulsanti
    ...
    // Creazione del listener, dei pulsanti e associazione
    listener = new PezzoListener();
    tuoJButton1 = new JButton( ... );
    ...
    borderDefault = tuoJButton1.getBorder();
    ...
    tuoJButton1.addMouseListener( listener );
    ...
    private boolean posizioneAccettabile(JButton cmd) {
       ... // Tua logica per decidere se il 'cmd' è accettabile
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.