Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Cambiare layout ai bottoni

    Ho un'applicazione swing composta da una toolBar dove sopra ci sono una decina di JButton

    Vorrei cambiare il layout dei Jbutton e renderli come quelli del compilatore Eclipse.
    I bottoni della toolBar del programma Eclipse quando ci passi sopra con il mouse vengono in rilievo. (vedi immagine)

    http://utenti.lycos.it/clanstk/Bottoni_eclipse.bmp


    (Il bottone di sinistra è quando è a riposo, quello di destra è il layout del bottone quando ci passi sopra il mouse)

    Come posso fare la stessa cosa con i JButton?

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Se bar è la JToolBar, basta fare:

    bar.setRollover(true);


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    con il metodo che hai segnalato, quando ci passi sopra il mouse viene evidenziato il bordo del bottone

    invece vorrei che il bottone venisse in "rilievo" quando ci passo sopra il mouse

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Potresti utilizzare due immagini da visualizzare per il bottone.
    Gli eventi interessati saranno mouseEntered e mouseExited.
    Slack? Smack!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    argh lavorone fare 2 immagini per ogni bottone considerando che ne ho circa 20 di bottoni

    molto meglio trovare il modo di farlo via linguaggio

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non penso che si possa fare da linguaggio.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    javax.swing.BorderFactory

    Questa classe mette a disposizione molti metodi statici
    per la 'decorazione' dei componenti.

    esempio:
    codice:
            public void mouseEntered(MouseEvent e) {
                    Object obj = e.getSource();
                    if (obj == button) {
                            button.setBorder(BorderFactory.createEtchedBorder());
                    }
            }
    
            public void mouseExited(MouseEvent e) {
                    Object obj = e.getSource();
                    if (obj == button) {
                            button.setBorder(null);
                    }
            }
    Slack? Smack!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Sergio Pedone
    javax.swing.BorderFactory

    Questa classe mette a disposizione molti metodi statici
    per la 'decorazione' dei componenti.

    esempio:
    codice:
            public void mouseEntered(MouseEvent e) {
                    Object obj = e.getSource();
                    if (obj == button) {
                            button.setBorder(BorderFactory.createEtchedBorder());
                    }
            }
    
            public void mouseExited(MouseEvent e) {
                    Object obj = e.getSource();
                    if (obj == button) {
                            button.setBorder(null);
                    }
            }
    Ottimo il suggerimento. Però, per fare esattamente quello che abcd1000 chiede, bisogna usare un metodo diverso della classe BorderFactory:
    codice:
    public void mouseEntered(MouseEvent e) {
       Object obj = e.getSource();
       if (obj == button) {
          button.setBorder(BorderFactory.createRaisedBevelBorder());
       }
    }
    In questo modo viene visualizzato un bordo rialzato (come quello dei pulsanti normali) al passaggio del mouse.


    Comunque ti ringrazio Sergio perchè mi hai reso un grosso servigio: posso modificare una classe da me realizzata per la costruzione di una chat, utilizzando proprio la classe BorderFactory. Nella mia classe avevo implementato io a mano quell'effetto... :adhone:


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    il codice corretto forse è

    codice:
    public void mouseEntered(MouseEvent e) {
       Object obj = e.getSource();
       if (obj instanceof JButton) {
          JButton button = (JButton)obj;
          button.setBorder(BorderFactory.createRaisedBevelBorder());
       }
    }

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da abcd1000
    il codice corretto forse è

    codice:
    public void mouseEntered(MouseEvent e) {
       Object obj = e.getSource();
       if (obj instanceof JButton) {
          JButton button = (JButton)obj;
          button.setBorder(BorderFactory.createRaisedBevelBorder());
       }
    }
    Sì... non so se vada bene anche con l'operatore ==, comunque si può di certo usare il metodo equals() per il confronto con il pulsante che ha generato l'evento... (non era quello l'obiettivo del messaggio).



    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 © 2024 vBulletin Solutions, Inc. All rights reserved.