come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!
preferibilmente Graphics sulla quale ho una minima conoscenza!
come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!
preferibilmente Graphics sulla quale ho una minima conoscenza!
Non è molto ben chiaro ..... non tanto la tua domanda .... ma bensì il fatto che forse non hai ben chiaro come funziona il painting.Originariamente inviato da zipangulu
come faccio a disegnare fuori dal metodo paint?tramite graphics opure altre classi!
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.Originariamente inviato da zipangulu
ma il mio scopo è proprio qst!disegnare su un panel un grafico(disegno) "temporaneo" che al prossimo repaint deve sparire!
Prendi il Graphics e disegni.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
si ma nn mi ha aiutatoOriginariamente inviato da andbin
Ah beh ... allora se è così fai pure.
Prendi il Graphics e disegni....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:
e il metodo chiamaPaint() è così ftt: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();
cosa c'è che non va?cosa sbaglio?codice:public void chiamaPaint(){ Graphics g1=this.getGraphics(); g1.setColor(Color.BLACK); g1.drawLine(0,0,500,500); }
Spiegami cosa disegni a fare se l'intero frame non è ancora nemmeno visibile .....Originariamente inviato da zipangulu
cosa c'è che non va?cosa sbaglio?
No. Rendi visibile il tuo frame con dentro il pannello e poi a seguito di un qualche evento disegna qualcosa.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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!
Allora:io ho qst classe
mi spiegate cm faccio a disegnare un "grafico" dato un array "d" di double che rappresenta le ordinate dei vari punti della funzionecodice: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); } } }
es:d[0] è f(0)
Ps. è il valore assunto dalla funzione nel punto x=0 e così via
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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?