Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Graphics su Applet

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    Graphics su Applet

    Ciao a tutti.
    Ho creato la mia applet con dentro un jPanel.
    Adesso vorrei richiamare la mia funzione per far disegnare dentro il jPanel1:
    codice:
    private javax.swing.JPanel jPanel1;
    
    public void run(){
        Point p=new Point("punto",30,50);
    
        try {
            p.drawPoints (Graphics g);
            p.drawLabels (Graphics g);
        }
        catch(Exception e) {
              System.out.print("Whoops! It didn't work! \n");
              e.printStackTrace();
               }
    
            }
    Purtroppo questo non è possibile visto che le funzioni drawPoints e drawLabels richiedono il passaggio di un oggetti Graphics.
    Potrei anche direttamente creare un oggetto Graphics al posto del jPanel1 e poi passarlo ai due metodi, ma non so fare neanche questo.
    Qualcuno mi può illuminare?
    Grazie.

  2. #2
    Per utilizzare le componenti grafiche è necessario ridefinire il metodo paint() ereditato dalla classe Component che JPanel estende. Tale metodo viene invocato automaticamente in fase di visualizzazione del componente:

    codice:
    ...
    public void paint(Graphics g) {
        ...		
    }
    ...
    Tale metodo ti fornisce l'istanza dell'oggetto Graphics della quale hai bisogno.
    Inoltre hai il metogo getGraphics() che ti restituisce il componente grafico di un Component.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ho provato con questo metodo e funziona!
    codice:
    Graphics g=jPanel1.getGraphics();
    grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da satifal
    Per utilizzare le componenti grafiche è necessario ridefinire il metodo paint() ereditato dalla classe Component che JPanel estende.
    No, per i componenti Swing si dovrebbe fare l'override di paintComponent(Graphics) (e tenendolo preferibilmente protected, non public). Di paint(Graphics) puoi certamente fare l'override ma .... se lo fai, dovresti sapere bene che cosa stai facendo e il perché ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Il mio problema è che ho un sacco di metodi per disegnare linee, punti, poligoni, ecc...
    e tutti vogliono il componente Graphics passato come parametro.
    Se volessi fare l'override di paintComponent(), dovrei farne uno per ogni tipo di operazione.
    Come faccio a dare ad un solo pannello vari paintComponent()?

    Altra domanda, quando disegno sul panel gli oggetti vengono cancellati ad ogni modifica della finestra (repaint), come posso mantenerli in memoria in maniera da non perderli ad ogni modifica?

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.