Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!

    come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!

    preferibilmente Graphics sulla quale ho una minima conoscenza!

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

    Re: come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!

    Originariamente inviato da zipangulu
    come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!
    Non è molto ben chiaro ..... non tanto la tua domanda .... ma bensì il fatto che forse non hai ben chiaro come funziona il painting.

    Sei ad esempio nel mouseClicked() di un MouseListener che hai registrato sul componente. Nulla ti vieterebbe di prendere il Graphics del componente e "disegnarci" qualcosa sopra. Ma tale disegno non sarebbe "permanente". Stai disegnando "al volo". Sparirebbe al prossimo repaint (che può avvenire per diversi motivi).

    Il vero "contesto" di disegno e solo nel paint() (paintComponent() in Swing).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    ma il mio scopo è proprio qst!disegnare su un panel un grafico(disegno) "temporaneo" che al prossimo repaint deve sparire!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    ma il mio scopo è proprio qst!disegnare su un panel un grafico(disegno) "temporaneo" che al prossimo repaint deve sparire!
    Ah beh ... allora se è così fai pure.
    Prendi il Graphics e disegni.
    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
    Nov 2009
    Messaggi
    755
    Originariamente inviato da andbin
    Ah beh ... allora se è così fai pure.
    Prendi il Graphics e disegni.
    si ma nn mi ha aiutato ...ad esempio io ho ftt in una classe che estende JPanel ho invocato:
    Graphics g = this.getGraphics();
    che dovrebbe ritornare il contesto grafico da usare per disegnare un particolare componente
    ma nn riesco a disegnare nnt!

    ad esempio se invoco qst metodo:
    g.drawLine(0,0,500,500);
    dovrebbe disegnare sul panel (creato naturalmente nel main che ho messo in una JFrame cl setVisible(true),sempre nel main)
    ma nn fa nnt
    nel main ho scritto:
    codice:
    public static void main(String [] args){
    		JFrame f=new JFrame();
    		Pannello p=new Pannello();
    		f.add(p,BorderLayout.NORTH);
    		p.chiamaPaint();
    		f.setVisible(true);//inutile!
    		f.pack();
    e il metodo chiamaPaint() è così ftt:
    codice:
    public void chiamaPaint(){             
    		Graphics g1=this.getGraphics();
    		g1.setColor(Color.BLACK);
    		g1.drawLine(0,0,500,500);
    	}
    cosa c'è che non va?cosa sbaglio?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zipangulu
    cosa c'è che non va?cosa sbaglio?
    Spiegami cosa disegni a fare se l'intero frame non è ancora nemmeno visibile .....

    No. Rendi visibile il tuo frame con dentro il pannello e poi a seguito di un qualche evento disegna qualcosa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    ma scusami invocando il mtodo setVisible(true) al frame dopo avergli aggiunto al suo interno il Panel nn dovrebbe essere visibile?
    nn ho capito bn cs vuoi dire!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Allora:io ho qst classe
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    
    public class Pannello extends JPanel{
    	public Pannello(){
    		super(new GridLayout(0,1));
    		this.setPreferredSize(new Dimension(920,500));
    		this.setBackground(Color.WHITE);
    		this.setVisible(true);
            }
            public void paint(Graphics g){
    		super.paint(g);
    		g.drawLine(460,0,460,500);                         //disegna l'asse verticale degli assi
    		g.drawLine(0,250,920,250);                         //disegna l'asse orizzontale degli assi
    		for(int i=0;i<9200;i+=92){                          //disegna i trattini sull'asse orizz
    			g.drawLine(i/10,245,i/10,255);  
    		}
    		for(int i=0;i<500;i+=10){                            //disegna i trattini sull'asse verticale
    			g.drawLine(455,i,465,i);
    		}
           }
    }
    mi spiegate cm faccio a disegnare un "grafico" dato un array "d" di double che rappresenta le ordinate dei vari punti della funzione
    es:d[0] è f(0)
    Ps. è il valore assunto dalla funzione nel punto x=0 e così via

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Per i componenti Swing non devi fare l'override di paint() ma di paintComponent()!!!!

    E comunque a questo punto non ho capito cosa vuoi fare .... prima parlavi di disegno "non permanente" .... ora da quello che vedo vuoi disegnare qualcosa di "permanente".

    Quindi ... spiega meglio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Ho cambiato idea... metto una condizione nel paint/paintComponent() in modo che ad ogni repaint sa cs disegnare e se c'è qlcs in + da disegnare(sempre in modo permanente)!
    ma poi per "ridisegnare" un componente se uso il paintComponent() al posto del paint() devo sempre usare il repaint() o ne devo usare un altro?

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.