|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[JAVA] Problema disegno grafico e MouseListener
Ciao a tutti. Sto implementando un piccolo programma che disegna su un pannello un cerchio quando viene premuto il tasto del mouse. Ho reimplementato quindi il metodo paintComponent(), ma non riesco a capire come chiamarlo all'interno della classe che implementa il MouseListener. Qualcuno può aiutarmi?
Codice:
package esame2;
import java.awt.*;
import javax.swing.*;
public class Esame2 extends JFrame{
public static void main(String [] args){
JFrame frame=new JFrame("Programma");
frame.setSize(300, 300);
frame.setContentPane(new MyPanel());
frame.setVisible(true);
frame.setResizable(true);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
public class MyPanel extends JPanel{
JPanel x;
public MyPanel(){
this.setBackground(Color.GREEN);
this.addMouseListener(new Disegno());
}
class Disegno implements MouseListener{
public void mouseClicked(MouseEvent e) {
paintComponent(g);
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.fillOval(10, 10, 10, 10);
}
}
}
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
nel dubbio io uppo
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Lo invochi con repaint().
Per il sistema di disegno usato dai componenti AWT/Swing quel che devi realizzare è una procedura di disegno in cui eventuali mutazioni siano indipendenti dal ciclo di rendering. In pratica e molto banalmente puoi usare una collezione di oggetti Shape. Nel paintComponent scrivi una cosa tipo: Codice:
Graphics2D g = (Graphics2D)graphics;//graphics è l'argomento del metodo paintComponent
g.setPaint(Color.BLACK);
for(Shape s : shapes) {
g.paint(drawables.get(i));
}
Per disegnare tramite gli eventi del mouse scrivi una cosa del genere. Nel mouseClicked: Codice:
Shape shape = new Ellipse2D.Float(10, 10, 50, 50); shapes.add(shape); repaint(); Codice:
Graphics2D g = (Graphics2D)graphics;//graphics è l'argomento del metodo paintComponent
g.setPaint(Color.BLACK);
for(Shape s : shapes) {
g.draw(drawables.get(i));
}
if(currentShape != null) {
g.draw(currentShape);
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:47.



















