Output grafico: disegni

Nella pagina precedente si è mostrato come i componenti di Java permettono di ottenere sullo schermo del computer la rappresentazione di una stringa con i caratteri, la grandezza e il colore giudicati più adatti dal programmatore. Con modalità analoghe si possono realizzare sullo schermo le forme più varie. A questo scopo è disponibile la classe Graphics dotata di numerosi metodi atti a produrre configurazioni grafiche basilari.

In generale è preferibile non disegnare direttamente nel frame principale ma in uno o più panels da inserire in esso.

Nell'esempio seguente si dichiara la classe principale Disegni derivandola da JFrame e anche una classe ausiliaria Pannello derivata da JPanel da inserire in Disegni.
La classe Pannello è fornita del metodo paint incaricato di specificare le operazioni grafiche da eseguire quando deve essere eseguita l'istruzione di ridisegnare il pannello, impartito, nell'esempio, dall'istruzione d.pannello.repaint() nella funzione main di Disegni.

In definitiva la sequenza di preparazione dell'applicazione è la seguente.

 


Esempio.

import java.awt.*;
import javax.swing.*;

public class Disegni
extends JFrame

{
  Pannello pannello;

  public Disegni() 
   {
     setTitle("Disegni");
     setSize(400,400);
     setLocation(0,0);
     pannello = new Pannello();
     add(pannello);
   }


//----------------------------------------------------------------------
  public static void main(String[] args)
    {
      Disegni d = new Disegni();
      d.pannello.repaint();
      d.setVisible(true);
    }
}
/*********************************************************/
class Pannello
extends JPanel
{
  Pannello()
    {
     setBorder(BorderFactory.createRaisedBevelBorder());
     setBackground(Color.cyan);
    }
//---------------------------------------------------------------------- 
  public void paint(Graphics g) 
    {
      g.setColor(Color.red);
      g.drawRect(50,50,100,60);
      g.drawString("rettangolo",50,124);
      g.setColor(Color.blue);
      g.drawOval(200,200,80,80);
      g.drawString("cerchio",200,300);
    }
}

Nella console

fig01.gif

e sul monitor

fig02.gif