Java, come utilizzare JPanel per creare un area disegno

Verrà  usato Jpanel come area di disegno, nella quale l’utente trascinando il mouse potrà  disegnare. Inoltre verranno utilizzati gli ascoltatori degli eventi.

Personalizzando Jpanel per renderlo un area di disegno occorrerà  sovrascrivere il metodo paintComponent.

Il seguente file verra salvato come Paint.java

import java.awt.Point;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionAdapter;

import javax.swing.JPanel;

public class Paint extends JPanel 

{

   private int contaPunti = 0; // Conta il numero di punti

   // array di 10000 riferimenti a java.awt.Point

   private Point punti[] = new Point[ 100000 ];  

   //Imposta l’interfaccia grafica e registra il gestore degli eventi per il mouse

   public Paint()

   {

      // gestore dei movimenti del mouse

      addMouseMotionListener(

         new MouseMotionAdapter()

         {  

            //memorizza le coordinate del trascinamento del mouse e le ridisegna

            public void mouseDragged( MouseEvent event )

            {

               if ( contaPunti < punti.length ) 

               {

                  punti[ contaPunti ] = event.getPoint(); // trova il punto

                  contaPunti++; // incrementa il numero di punti nell’array

                  repaint(); // ridisegna JFrame

               } 

            } 

         } 

      ); 

   }

   // disegna un ovale in un rettangolo alla posizione specificata

   public void paintComponent( Graphics graph )

   {

      super.paintComponent( graph ); // pulisce l’area di disegno

      //disegna tutti i punti nell’array

      for ( int i = 0; i < contaPunti; i++ )

         graph.fillOval( punti[ i ].x, punti[ i ].y, 4, 4 ); //rettangolo 4×4

   } 

La classe verra compilata tramite javac Paint.java 
Ora vedremo come collaudare il nostro Paint
Il file verrà  salvato come ProvaPaint.java
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ProvaPaint
{
   public static void main( String args[] )
   { 
      // creare JFrame
      JFrame app = new JFrame( “Un semplice esempio Paint” ); //visualizzato nella barra del titolo
      Paint paintPanel = new Paint(); // crea l’area su cui disegnare
      app.add( paintPanel, BorderLayout.CENTER ); // al centro
      
      // crea un’etichetta di testo e la posizione in basso
      app.add( new JLabel( “Muovi il mouse e inizia a disegnare” ), 
         BorderLayout.SOUTH );
      app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      app.setSize( 600, 400 ); // imposta le dimensioni
      app.setVisible( true ); // visualizza il frame
   } 
Compilare java ProvaPaint.java per eseguire java ProvaPaint

Please follow and like us: