Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405

    Problema con getGraphics

    Come si usa correttamente l'istruzione getGraphics? Devo disegnare un rettangolo con draw3DRect() ma nn ci riesco, queto è il codice:
    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class MainClass{
    	public static void main(String[] args){
    		JFrame window=new JFrame("FINESTRA DI PROVA");
    		Container cnt=window.getContentPane();
    		JPanel pan=new JPanel();
    		pan.setBackground(Color.white);
    		Graphics g=getGraphics();
    		window.setBounds(500,400,200,180);
    		g.draw3DRect(1,1,10,10,true);
    		cnt.add(pan);
    		window.show();
    	}
    }
    Mi da errore sull'istruzione getGraphics().

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    prima devi costruire l'elemento poi usi il getGraphics...
    codice:
    Graphics g=new Graphics();
    g.getgraphics

  3. #3
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Mi dice che la classe Graphics è astratta e quindi non può essere istanziata...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    g lo devi andare a prendere da un componente, per cui, ad esempio:
    codice:
    Graphics g = window.getGraphics();
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    scusa mi sono sbagliato....
    la prossima volta posta l'errore che ottieni così è più facile capire. l'errore che da a me incollando il tuo codice è che graphics nn può operare in un contesto statico, cioè nel main.
    guarda questo che i torna utile
    http://forum.html.it/forum/showthrea...hreadid=981348

  6. #6
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Originariamente inviato da Andrea1979
    g lo devi andare a prendere da un componente, per cui, ad esempio:
    codice:
    Graphics g = window.getGraphics();
    Non funziona nemmeno così, non mi da errori di compilazioni ma quando lo eseguo la console mi mostra che c'è stata un'eccezzione, e quindi non va.

    Per Perzem:non ho capito bene, quindi io non posso fare un getGraphics dal main? Dovrei crearmi una classe apposta?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Va (ho sistemato un po' l'ordine delle cose). Saluti
    codice:
    public static void main(String[] args){
                  JFrame window = new JFrame("FINESTRA DI PROVA");
                  window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  Container cnt=window.getContentPane();
                  JPanel pan=new JPanel();
                  pan.setBackground(Color.white);
                  window.setBounds(500,400,200,180);
                  cnt.add(pan);
                  window.setVisible(true);
                  Graphics g = pan.getGraphics();
                  g.draw3DRect(10,10,100,100,true);
                  //window.validate();
    
          }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Grazie ora funziona, mi potresti dire dove sbagliavo, e xkè hai fatto quei cambiamenti?Così posso capire

  9. #9
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Un altra cosa anche, come mai, dopo che ho eseguito il main,vedo il rettangolo disegnato, ma se sposto la finestra sotto un'altra finestra, il rettangolo sparisce? a cosa è dovuto?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora, non mi sono mai documentato a fondo sull'oggetto Graphics, ma da quel che ho sperimentato, ha bisogno che il componente da cui vuoi recuperarlo (i.e.: la tua finestra ha bisogno di un componente su cui andare a disegnare il rettangolo) sia "visibile" - rgion per cui ho spostato il metodo window.show() (anzi, per meglio dire, show dovrebbe essere deprecato, si utilizza setVisible(true))

    L'altra aggiunta che ho fatto, all'inizio, serve solo per far chiudere l'applicazione quando clicchi sulla x, altrimenti ti resta aperta (gusto personale, ma non mi piace killare la jvm dal taskmanager...)

    il window.validate() commentato alla fine potrebbe servirti a risolvere l'ultima tua questione, sul perché sparisce il rettangolo: validate serve a far ricaricare il componente (e figli) su cui viene invocato. Può succere che aggiungendo,togliendo,modificando componenti grafici, le modifiche non siano subito visibili. Con validate ti assicuri che il tutto alla fine venga "refreshato". Prova a decommentarlo.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.