Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Java] Disegnare su pannello

    Il mio problema di semplice spiegazione. Ho un pannello (da me esteso), "SU" cui devo desegnare delle linee, come posso fare?

    Ho provato a ridefinire il metodo paint ma non mi disegna nulla, o mi disegna solo le linee oppure solo le componenti del pannello! Come posso fare?

    Devo praticemente connettere 2 JLabel con una linea!

    Non so proprio che fare!!! :'(

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Disegnare su pannello

    Originariamente inviato da Jack.cpp
    Il mio problema di semplice spiegazione. Ho un pannello (da me esteso), "SU" cui devo desegnare delle linee, come posso fare?

    Ho provato a ridefinire il metodo paint ma non mi disegna nulla, o mi disegna solo le linee oppure solo le componenti del pannello! Come posso fare?

    Devo praticemente connettere 2 JLabel con una linea!
    Per i componenti Swing che derivano da JComponent (come JPanel), il metodo è paintComponent().

    codice:
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       
    
        // .... tuoi disegni ....
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Se il pannello, come presumo, è un JPanel devi ridefinire il metodo paintComponent():
    codice:
    public void paintComponent(Graphics g) {
       super.paintComponent( g );
    
       // Qui disegni...
    }
    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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Che tempismo che abbiamo...
    "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

  5. #5

    Re: Re: [Java] Disegnare su pannello

    Originariamente inviato da andbin
    Per i componenti Swing che derivano da JComponent (come JPanel), il metodo è paintComponent().

    codice:
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       
    
        // .... tuoi disegni ....
    }
    Se nel panel ho giù delle cose, tipo bottoni, il disegno viene posto sopra??? Che è la cosa che mi interessa!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [Java] Disegnare su pannello

    Originariamente inviato da Jack.cpp
    Se nel panel ho giù delle cose, tipo bottoni, il disegno viene posto sopra??? Che è la cosa che mi interessa!
    Ciò che disegni in paintComponent() sta sotto eventuali componenti aggiunti nel panel.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7

    Re: Re: Re: Re: [Java] Disegnare su pannello

    Originariamente inviato da andbin
    Ciò che disegni in paintComponent() sta sotto eventuali componenti aggiunti nel panel.
    e allora? Come risolvo?

    Edit: Ragazzi vi devo fare una statua!!! THX mi avete salvato!

  8. #8
    Ehm...altro problemino!!!

    Sembra che "paintComponent" non possa essere invocato direttamente! (o si??)

    Come faccio ad invocare il disegno??? O anche, come ottengo l'oggetto Graphics da passare a paintComponent???

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Devi richiamare repaint().

    In teoria dovrebbe essere sufficiente richiamaer validate(), ma ho notato che spesso non ha il comportamento atteso.


    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.