1ª Parte:
import java.awt.*;

Exemplo

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavaGrafico extends JFrame {

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,400,400);

      ct.add(g2D);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
	      g.setColor(new Color(255, 0, 0));
		  g.drawRect(5, 10, 90, 50);
		  g.fillRect(100, 10, 90, 50);
	   }
   }
}

Cores

Constante Color Cor Valor RGB
Color.orange laranja 255, 200, 0
Color.pink cor-de-rosa 255, 175, 175
Color.cyan ciano 0, 255, 255
Color.magenta magenta 255, 0, 255
Color.yellow amarelo 255, 255, 0
Color.black preto 0, 0, 0
Color.white branco 255, 255, 255
Color.gray cinza 128, 128, 128
Color.ligthGray cinza-claro 192, 192, 192
Color.darkGray cinza-escuro 64, 64, 64
Color.red vermelho 255, 0, 0
Color.green verde 0, 255, 0
Color.blue azul 0, 0, 255

 

Exemplo:
g.setColor(Color.blue);
g.drawRect(5, 10, 90, 50);
g.fillRect(100, 10, 90, 50);

Objeto Color()

Color(int r, int g, int b)

Cria uma cor com base no conteúdo de vermelho, verde e azul, expresso como inteiros entre 0 e 255.
Exemplo:
new Color(255, 175, 175)

setColor(Color c) Configura a cor atual para desenho com o contexto gráfico
Exemplo:
g.setColor(new Color(255, 175, 175));
g.drawRect(5, 10, 90, 50);
g.fillRect(100, 10, 90, 50);

 

Método Descrição
getRed() Devolve um valor entre 0 e 255 que representa conteúdo de vermelho
getGreen() Devolve um valor entre 0 e 255 que representa conteúdo de verde
getBlue() Devolve um valor entre 0 e 255 que representa conteúdo de azul
getColor() Devolve o objeto Color que representa a cor atual para contexto gráfico.
Exemplo:

Color cor = new Color(78,127,25);
g.setColor(cor);
g.fillRect(5, 10, 100, 20);
g.drawString("Current RGB: "+g.getColor(), 5, 50);
g.drawString("RGB values : "+cor.getRed()+" "+cor.getGreen()+" "+cor.getBlue(), 5, 70);

Cor de Fundo

Exemplo:
g.setColor(Color.blue);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.red);
g.drawRect(5, 10, 90, 50);
g.fillRect(100, 10, 90, 50);

Objeto Fonte

Constante Descrição
Font.PLAIN Constante que representa um estilo de fonte simples
Font.BOLD Constante que representa um estilo de fonte em negrito
Font.ITALIC Constante que representa um estilo de fonte em itálico
Font.BOLD+Font.ITALIC Constante que representa um estilo de fonte em negrito e itálico

 

Font(String name, int style, int size)

Cria um objeto Font com a fonte o estilo e o tamanho especificados.
new Font("Monospaced",Font.BOLD+Font.ITALIC, 24)

setFont(Font f) Configura a fonte atual com a fonte, o estilo e o tamanho especificados pela referência ao objeto Font f.
Exemplo:

g.setColor(Color.blue);
g.setFont(new Font("Monospaced",Font.BOLD+Font.ITALIC, 14));
g.drawString("Monospaced 14 points bold, italic", 5, 25);

 

Estilo da Fonte
Método Descrição
getFont() Devolve uma referência do objeto Font que representa a fonte atual.
getFont().getStyle() Devolve um valor inteiro que indica o estilo de fonte atual (Negrito e Itálico).
getFont().getSize() Devolve um valor inteiro que indica o tamanho da fonte atual.
getFont().getName() Devolve o nome da fonte atual como um string.
getFont().getFamily() Devolve o nome da família de fontes como um string.
getFont().isPlain() Verifica se o estilo da fonte é simples. Devolve true se a fonte for simples.
getFont().isBold() Verifica se o estilo da fonte é negrito. Devolve true se a fonte estiver em negrito.
getFont().isItalic() Verifica o estilo da fonte é itálico. Devolve true se a fonte estiver em itálico.
Medida da Fonte
Metodo Descrição
FontMetrics metrics = g.getFontMetrics() Devolve as mediadas da fonte usada.
String mensagem = "Testando Java 2D: Hello World (y-Ô)";

metrics.stringWidth(mensagem)
Devolve um valor que representa a largura de uma fonte em pontos.
metrics.getHeight() Devolve um valor que representa a altura de uma fonte em pontos.
metrics.getLeading() Devolve um valor que representa em cima de uma fonte, em pontos.
metrics.getAscent() Devolve um valor que representa o meio de uma fonte, em pontos.
metrics.getDescent() Devolve um valor que representa em baixo de uma fonte, em pontos.
Exemplo:
Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavaGrafico extends JFrame {

	  private JButton botao;
	  String texto ="";

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,400,200);

      ct.add(g2D);

botao = new JButton("Resultado");

botao.setBounds(0,50,150,25);

ct.add(botao);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

      botao.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {

            JOptionPane.showMessageDialog(null, texto);

      }});

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
g.setColor(Color.blue);
g.setFont(new Font("SansSerif",Font.BOLD+Font.ITALIC, 22));
String mensagem = "Testando Java 2D: Hello World (y-Ô)";
g.drawString(mensagem, 5, 25);

texto = "";
texto += g.getFont().getName()+"\n";
texto += g.getFont().getSize()+" pontos\n"; 
if(g.getFont().isBold()== true){
texto += "Negrito\n"; 
}
if(g.getFont().isItalic()== true){
texto += "Italico\n"; 
}
FontMetrics metrics = g.getFontMetrics();
texto += "Largura: "+metrics.stringWidth(mensagem)+"\n";
texto += "Altura: "+metrics.getHeight()+"\n";
texto += "[em cima]: "+metrics.getLeading()+"\n";
texto += "[do meio]: "+metrics.getAscent()+"\n";
texto += "[em baixo]: "+metrics.getDescent();
	   }
   }
}

Lista de fontes

Se você quer obter a lista de fontes, use esse código:

Arquivo: Estudos.java
/*
 Este exemplo mostra como obter a lista
 de fontes disponíveis no sistema. Observe
 que apenas os nomes das fontes são obtidas
 com o método getAvailableFontFamilyNames. Outras
 dicas contém códigos mais avançados em relação
 ao uso de fontes em Java.
*/

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

public class Estudos extends JFrame{
  public Estudos(){
    super("Lista de Fontes");
    
    String[] fontNames; // nomes das fontes
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    fontNames = 
      GraphicsEnvironment.getLocalGraphicsEnvironment().
      getAvailableFontFamilyNames();
  
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    JTextArea textArea = new JTextArea(15, 40);
    JScrollPane scrollPane = new JScrollPane(textArea);
       
    c.add(scrollPane);
    
    // adiciona os nomes das fontes ao JTextArea
    for(int i = 0; i < fontNames.length; i++){
      textArea.setText(textArea.getText() +
        fontNames[i] + "\n");
    }

    setSize(500, 350);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Desenhando linhas, retângulos e elipses

Linhas

g.drawLine(int x1, int y1, int x2, int y2);

Desenha uma linha entre o ponto (x1, y1) e o ponto (x2, y2).

Exemplo:
g.setColor(new Color(78,127,25));
g.drawLine(5, 10, 95, 60);
g.setColor(Color.blue);
g.drawLine(10, 60, 95, 10);

Retângulo

g.drawRect(int x, int y, int width, int height);

Desenha um retângulo (linha) com a Width e a height especificadas. O canto superior esquerdo do retangulo tem a coordenada (x, y).

g.fillRect(int x, int y, int width, int height);

Desenha um retângulo (sólido) com a Width e a height especificadas. O canto superior esquerdo do retangulo tem a coordenada (x, y).

Exemplo:
g.setColor(new Color(78,127,25));
g.drawRect(5, 10, 90, 50);
g.setColor(Color.blue);
g.fillRect(100, 10, 90, 50);

Elípse

g.drawOval(int x, int y, int width, int height);

Desenha uma elipse (linha) na cor atual com a width e a height específicadas. O canto superior esquerdo está nas coordenadas (x, y).

g.fillOval(int x, int y, int width, int height);

Desenha uma elipse (sólido) na cor atual com a width e a height específicadas. O canto superior esquerdo está nas coordenadas (x, y).

Exemplo:
g.setColor(new Color(78,127,25));
g.drawOval(5, 10, 90, 50);
g.setColor(Color.blue);
g.fillOval(100, 10, 90, 50);

Retângulo com cantos arredondados

g.drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);

Desenha um retângulo com cantos arredondados (linha) na cor atual com a width e a height especificadas. A arcWidth e arc Height determinam o arredondamento dos cantos.

g.fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);

Desenha um retângulo com cantos arredondados (sólido) na cor atual com a width e a height especificadas. A arcWidth e arcHeight determinam o arredondamento dos cantos.

 

 

Exemplo:
g.setColor(new Color(78,127,25));
g.drawRoundRect(5, 10, 90, 50, 40, 40);
g.setColor(Color.blue);
g.fillRoundRect(100, 10, 90, 50, 40, 40);

Arco

Obs:
1 - O arco pode ser uma elípse ou um círculo;
2 - O ângulo do arco é dado em Graus
3 - O arco não é criado no sentido anti-horário

4 - O arco é criado no sentido anti horário


5 - Arco negativo, quando o inicio_do_angulo é entre 270º e 360 ou menos, o fim_do_angulo é negativo
Exemplo:
inicio_do_angulo = 300º
fim_do_angulo = 200-300 = -100



g.fillArc(int x, int y, int width, int height, inicio_do_angulo, int fim_do_angulo);

Desenha um arco (sólido) em relação às coordenadas do canto superior esquerdo do retângulo delimitador (x, y) com a width e a height especificadas. O segmento do arco é desenhado começando-se em inicio_do_angulo e finalizando-se em fim_do_angulo.

g.drawArc(int x, int y, int width, int height, inicio_do_angulo, int fim_do_angulo);

Desenha um arco (linha) em relação às coordenadas do canto superior esquerdo do retângulo delimitador (x, y) com a width e a height especificadas. O segmento do arco é desenhado começando-se em inicio_do_angulo e finalizando-se em fim_do_angulo.

Exemplo:
g.setColor(new Color(78,127,25));

g.fillArc(10, 10, 100, 100, 0, 120);
g.fillArc(120, 10, 100, 100, 360, -240);

g.setColor(Color.blue);

g.drawArc(10, 120, 100, 100, 0, 120);
g.drawArc(120, 120, 100, 100, 360, -240);

Polígono

Polygon p1 = new Polygon(int xValor, int yValor, int número_de_pontos);

Constrói um novo objeto polígono. O polígono tem número_de_pontos ao lado, com cada ponto consistindo em uma coordenada x de xValor e uma coordenada y de yValor.

Ou:

Polygon p2 = new Polygon();
p2.addPoint(int xValor, int yValor);


Também constrói um novo objeto polígono. Constrói cada ponto na coordenada x de xValor e na coordenada y de yValor.

g.drawPolygon(Polygono p);

Desenha o polígono (linha) fechado especificado.

g.fillPolygon(Polygono p);

Desenha o polígono sólido especificado, o polígono é fechado.


Ou:

g.drawPolygon(int xValor, int yValor, int número_de_pontos);

Desenha o polígono (linha) fechado especificado.O polígono tem número_de_pontos ao lado, com cada ponto consistindo em uma coordenada x de xValor e uma coordenada y de yValor.

g.fillPolygon(int xValor, int yValor, int número_de_pontos);

Desenha o polígono sólido especificado, o polígono é fechado.O polígono tem número_de_pontos ao lado, com cada ponto consistindo em uma coordenada x de xValor e uma coordenada y de yValor.

Exemplo:

g.setColor(new Color(78,127,25));
int xValor_1[] = {5, 5, 47, 90, 90, 47};
int yValor_1[] = {10, 55, 42, 55, 10, 22};

Polygon p1 = new Polygon(xValor_1, yValor_1, 6);
g.drawPolygon(p1);

g.setColor(Color.blue);
int xValor_2[] = {100, 100, 147, 190, 190, 147};
int yValor_2[] = {10, 55, 42, 55, 10, 22};

Polygon p2 = new Polygon(xValor_2, yValor_2, 6);
g.fillPolygon(p2);

Ou:

g.setColor(new Color(78,127,25));
Polygon p1 = new Polygon();
p1.addPoint(5, 10);
p1.addPoint(5, 55);
p1.addPoint(47, 42);
p1.addPoint(90, 55);
p1.addPoint(90, 10);
p1.addPoint(47, 22);
g.drawPolygon(p1);

g.setColor(Color.blue);
Polygon p2 = new Polygon();
p2.addPoint(100, 10);
p2.addPoint(100, 55);
p2.addPoint(147, 42);
p2.addPoint(190, 55);
p2.addPoint(190, 10);
p2.addPoint(147, 22);
g.fillPolygon(p2);

Ou:

g.setColor(new Color(78,127,25));
int xValor_1[] = {5, 5, 47, 90, 90, 47};
int yValor_1[] = {10, 55, 42, 55, 10, 22};

g.drawPolygon(xValor_1, yValor_1, 6);

g.setColor(Color.blue);
int xValor_2[] = {100, 100, 147, 190, 190, 147};
int yValor_2[] = {10, 55, 42, 55, 10, 22};

g.fillPolygon(xValor_2, yValor_2, 6);

Poly Linha

g.drawPolyline(int xValor, int yValor, int número_de_pontos);

Desenha uma série de linhas conectadas. A linha tem número_de_pontos ao lado, com cada ponto consistindo em uma coordenada x de xValor e uma coordenada y de yValor.
Exemplo:

g.setColor(new Color(78,127,25));
int xValor[] = {10, 40, 70, 100, 130, 160};
int yValor[] = {10, 50, 10, 50, 10, 50};

g.drawPolyline(xValor, yValor, 6);

Aumentando e Diminuindo Imagens

private Image img = null;
.
.
.
Toolkit toolkit = getToolkit();
img = toolkit.createImage("coracao.gif");
.
.
.
// Diminuindo a imagem
g.drawImage(img, 10, 10, img.getWidth(this)/2, img.getHeight(this)/2, this);
// Normal
g.drawImage(img, 100, 10, img.getWidth(this), img.getHeight(this), this);
// Aumentando a imagem
g.drawImage(img, 200, 10, img.getWidth(this)*2, img.getHeight(this)*2, this);


Exemplo:
Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavaGrafico extends JFrame {

      private Image img = null;

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Toolkit toolkit = getToolkit();
      img = toolkit.createImage("coracao.gif");


      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,400,400);

      ct.add(g2D);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
// Diminuindo a imagem
g.drawImage(img, 10, 10, img.getWidth(this)/2, img.getHeight(this)/2, this);
// Normal
g.drawImage(img, 100, 10, img.getWidth(this), img.getHeight(this), this);
// Aumentando a imagem
g.drawImage(img, 200, 10, img.getWidth(this)*2, img.getHeight(this)*2, this);
	   }
   }
}

 

2ª Parte:
import java.awt.geom.*;

Retângulo

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(new Color(78,127,25));
grp.draw(new Rectangle2D.Double(5, 10, 90, 50));
grp.setPaint(Color.blue);
grp.fill(new Rectangle2D.Double(100, 10, 90, 50));

Elípse

Exemplo:
import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(new Color(78,127,25));
grp.draw(new Ellipse2D.Double(5, 10, 90, 50));
grp.setPaint(Color.blue);
grp.fill(new Ellipse2D.Double(100, 10, 90, 50));

Retângulo com cantos arredondados

Exemplo:
import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(new Color(78,127,25));
grp.draw(new RoundRectangle2D.Double(5, 10, 90, 50, 40, 40));
grp.setPaint(Color.blue);
grp.fill(new RoundRectangle2D.Double(100, 10, 90, 50, 40, 40));

Arco

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

grp.setPaint(new Color(78,127,25));

grp.fill(new Arc2D.Double(10, 10, 100, 100, 0, 120, Arc2D.PIE));
grp.fill(new Arc2D.Double(120, 10, 100, 100, 360, -240, Arc2D.PIE));

grp.setPaint(Color.blue);

grp.draw(new Arc2D.Double(10, 120, 100, 100, 0, 120, Arc2D.OPEN));
grp.draw(new Arc2D.Double(120, 120, 100, 100, 360, -240, Arc2D.OPEN));

 

Arc2D.PIE

grp.setPaint(Color.blue);

grp.draw(new Arc2D.Double(10, 10, 100, 100, 315, -90, Arc2D.PIE));

Arc2D.CHORD

grp.setPaint(Color.blue);

grp.draw(new Arc2D.Double(10, 10, 100, 100, 315, -90, Arc2D.CHORD));

Arc2D.OPEN

grp.setPaint(Color.blue);

grp.draw(new Arc2D.Double(10, 10, 100, 100, 315, -90,Arc2D.OPEN));

 

Linhas

Exemplo:
import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(new Color(78,127,25));
grp.draw(new Line2D.Double(5, 10, 95, 60));
grp.setPaint(Color.blue);
grp.draw(new Line2D.Double(10, 60, 95, 10));

Polígono

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

grp.setPaint(new Color(78,127,25));

int xValor_1[] = {5, 5, 47, 90, 90, 47};
int yValor_1[] = {10, 55, 42, 55, 10, 22};

GeneralPath p1 = new GeneralPath();

p1.moveTo(xValor_1[0], yValor_1[0]);

for(int count = 1; count < xValor_1.length; count++){
p1.lineTo(xValor_1[count], yValor_1[count]);
}

p1.closePath();

grp.draw(p1);

grp.setPaint(Color.blue);

int xValor_2[] = {100, 100, 147, 190, 190, 147};
int yValor_2[] = {10, 55, 42, 55, 10, 22};

GeneralPath p2 = new GeneralPath();

p2.moveTo(xValor_2[0], yValor_2[0]);

for(int count = 1; count < xValor_2.length; count++){
p2.lineTo(xValor_2[count], yValor_2[count]);
}

p2.closePath();

grp.fill(p2);

poly linha

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

grp.setPaint(new Color(78,127,25));

int xValor[] = {10, 40, 70, 100, 130, 160};
int yValor[] = {10, 50, 10, 50, 10, 50};

GeneralPath p1 = new GeneralPath();

p1.moveTo(xValor[0], yValor[0]);

for(int count = 1; count < xValor.length; count++){
p1.lineTo(xValor[count], yValor[count]);
}

grp.draw(p1);

Curvas


pac-man

Em nosso Exemplo:

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

GeneralPath gp = new GeneralPath();

// Ponto Inicial
gp.moveTo(0, 35);

//linha lateral esquerda
gp.lineTo(0, 80);

gp.quadTo(15, 95, 20, 80);
gp.quadTo(25, 75, 30, 80);
gp.quadTo(40, 95, 50, 80);
gp.quadTo(55, 75, 60, 80);
gp.quadTo(70, 95, 80, 80);

//linha lateral direita
gp.lineTo(80, 35);

//Topo
gp.curveTo(70, -5, 8, -5, 0, 30);

// Cor azul
grp.setPaint(Color.blue);

// Transporte
grp.translate(10, 10);

grp.draw(gp);

// Transporte
grp.translate(90, 0);

grp.fill(gp);

Arquivo: ShapedWindow.java

import java.awt.*;
import java.awt.geom.*;

import javax.swing.*;

public class ShapedWindow extends JFrame {
public ShapedWindow() {
super("Test oval-shaped window");
this.setLayout(new FlowLayout());
this.add(new JButton("test"));
this.add(new JCheckBox("test"));
this.add(new JRadioButton("test"));
this.add(new JProgressBar(0, 100));

this.setSize(new Dimension(400, 400));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Window w = new ShapedWindow();
w.setVisible(true);
GeneralPath gp = new GeneralPath();

// Ponto Inicial
gp.moveTo(0, 35);

//linha lateral esquerda
gp.lineTo(0, 80);

gp.quadTo(15, 95, 20, 80);
gp.quadTo(25, 75, 30, 80);
gp.quadTo(40, 95, 50, 80);
gp.quadTo(55, 75, 60, 80);
gp.quadTo(70, 95, 80, 80);

//linha lateral direita
gp.lineTo(80, 35);

//Topo
gp.curveTo(70, -5, 8, -5, 0, 30);

com.sun.awt.AWTUtilities.setWindowShape(w, gp);

}
});
}

}

 

Transformações geométricas


Tamanho das Bordas

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(Color.blue);

grp.draw(new Rectangle2D.Double(5, 10, 90, 50));

grp.setStroke(new BasicStroke(10));

grp.draw(new Rectangle2D.Double(130, 10, 90, 50));

Tipo de bordas

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(Color.blue);

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));

grp.draw(new Rectangle2D.Double(50, 50, 90, 50));

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));

grp.draw(new Rectangle2D.Double(200, 50, 90, 50));

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));

grp.draw(new Rectangle2D.Double(50, 150, 90, 50));

 

Borda quadrada Borda circular Borda triangular

BasicStroke.JOIN_MITER

grp.setPaint(Color.blue);

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));

grp.draw(new Rectangle2D.Double(50, 50, 90, 50));

BasicStroke.JOIN_ROUND

grp.setPaint(Color.blue);

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));

grp.draw(new Rectangle2D.Double(50, 50, 90, 50));

BasicStroke.JOIN_BEVEL

grp.setPaint(Color.blue);

grp.setStroke(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));

grp.draw(new Rectangle2D.Double(50, 50, 90, 50));

Gradiente

Exemplo:
import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;
grp.setPaint(new GradientPaint(5, 10, Color.blue, 65, 80, Color.yellow, true));
grp.fill(new Rectangle2D.Double(5, 10, 90, 50));

Mosáico

Exemplo:

import java.awt.geom.*;
import java.awt.image.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

BufferedImage buffImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
Graphics2D gg = buffImage.createGraphics();
gg.setColor(Color.yellow);
gg.fillRect(0, 0, 10, 10);
gg.setColor(Color.black);
gg.drawRect(1, 1, 6, 6);
gg.setColor(Color.blue);
gg.fillRect(1, 1, 3, 3);
gg.setColor(Color.red);
gg.fillRect(4, 4, 3, 3);

grp.setPaint(new TexturePaint(buffImage, new Rectangle(10, 10)));

grp.fill(new Ellipse2D.Double(5, 10, 90, 50));

Transporte

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

grp.setPaint(Color.blue);
grp.draw(new Rectangle2D.Double(0, 0, 50, 50));

grp.translate(25, 25);

grp.fill(new Rectangle2D.Double(0, 0, 50, 50));

Rotação

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

grp.setPaint(Color.blue);
grp.draw(new Rectangle2D.Double(0, 0, 50, 50));

grp.translate(50, 0);

// Rotação de 45º
grp.rotate(Math.PI/4);

grp.fill(new Rectangle2D.Double(0, 0, 50, 50));

Traços numa linha

Exemplo:

import java.awt.geom.*;
.
.
.
Graphics2D grp = (Graphics2D) g;

float linha[] = {10, 20};

grp.setPaint(Color.blue);
grp.setStroke( new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, linha, 0));
grp.draw(new Line2D.Double(0, 0, 100, 100));

 

BasicStroke.CAP_BUTT

BasicStroke.CAP_ROUND

BasicStroke.CAP_SQUARE

CAP_BUTT extremidade nenhuma.
Por padrão é quadrada.
CAP_ROUND extremidade circular. CAP_SQUARE extremidade quadrada.

Exemplo de círculo com traços

Exemplo:

Graphics2D grp = (Graphics2D) g;

float linha[] = {10, 20};

grp.setPaint(Color.blue);
grp.setStroke( new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, linha, 0));
grp.draw(new Ellipse2D.Double(5, 5, 100, 100));

Girando uma Imagem

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;
import java.awt.image.*;

public class JavaGrafico extends JFrame {

      private Image img = null;

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Toolkit toolkit = getToolkit();
      img = toolkit.createImage("coracao.gif");


      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,400,400);

      ct.add(g2D);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
Graphics2D grp = (Graphics2D) g;
int largura = img.getWidth(this);
int altura = img.getHeight(this);
try {
BufferedImage buffImage = new BufferedImage(largura, altura, BufferedImage.TYPE_INT_RGB);

Graphics2D gg = buffImage.createGraphics();

gg.drawImage(img, 0, 0, largura, altura, this);

grp.setPaint(new TexturePaint(buffImage, new Rectangle(largura, altura)));
} catch(Exception rem){ /*erro removido e apagado*/ }
grp.translate(100, 50);

grp.rotate(Math.PI/1.5);

grp.fill(new Rectangle2D.Double(0, 0, largura, altura));
	   }
   }
}

 

Criando animações com imagens

T1.gif T2.gif T3.gif T4.gif T5.gif
T6.gif T7.gif T8.gif T9.gif T10.gif
T11.gif T12.gif T13.gif T14.gif T15.gif
T16.gif T17.gif      

 

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.image.*;
import java.lang.*;
public class JavaGrafico extends JFrame {

      private Image img[];
	  private int tempoEspera = 150;
	  private int numImg = 17;
	  private int imgAtual;

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      img = new Image[numImg];
      Toolkit t = getToolkit();
	  for(int i = 1; i <= numImg; i++){ 
	  	try {
	  		img[i] = t.createImage("duke\\T"+i+".gif");
	  	} catch (ArrayIndexOutOfBoundsException erro) {/* Erro desapareceu */}
	  }

	  imgAtual = 0;

      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,400,400);

      ct.add(g2D);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
g.drawImage(img[imgAtual], 10, 10, this);
imgAtual = (imgAtual + 1) % numImg;
try {
Thread.sleep(tempoEspera);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
	   }
   }
}

 

Eventos
Interagindo com os gráficos

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class JavaGrafico extends JFrame {

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      PaintPanel g2D = new PaintPanel();

      g2D.setBounds(0,0,400,400);

      ct.add(g2D);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
Graphics2D grp = (Graphics2D) g;

float linha[] = {10, 20};

grp.setPaint(Color.blue);
grp.setStroke( new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, linha, 0));
grp.draw(new Ellipse2D.Double(5, 5, 100, 100));
	   }
   }
}
Arquivo: PaintPanel.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PaintPanel extends JPanel {
private int pointCount = 0; // número de contagem de pontos

// array de 10000 referências java.awt.Point
private Point points[] = new Point[ 10000 ];
private String mouse[] = new String[10000];
private String mensagem = "Testando";
// configura a GUI e registra handler de evento de mouse
public PaintPanel() {
this.setFocusable(true);
    addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent tecla) {
    char caracter = tecla.getKeyChar();
	int codigo = tecla.getKeyCode();
	if(codigo == KeyEvent.VK_BACK_SPACE) {
		if(!mensagem.equals("")){
			mensagem = mensagem.substring(0, mensagem.length()-1);
		}
	} else if(codigo != KeyEvent.VK_BACK_SPACE) {
	mensagem += ""+caracter;
	}
	repaint();
   }});
   addMouseMotionListener( new MouseMotionAdapter(){  
         public void mouseDragged( MouseEvent event ){

            if (event.isMetaDown()){
        	   if ( pointCount < points.length ){
                 points[ pointCount ] = event.getPoint(); // localiza o ponto
				 mouse[pointCount]="vermelho";
                 pointCount++; // incrementa número de pontos em array
                 repaint(); // repinta JFrame
                }//fim if interno
            }else{
            	if ( pointCount < points.length ){
                 points[ pointCount ] = event.getPoint(); // localiza o ponto
				 mouse[pointCount]="azul";
                 pointCount++; // incrementa número de pontos em array
                 repaint(); // repinta JFrame
                }//fim if interno
            }//fim do if else
         }});
} // fim do construtor PaintPanel


public void paintComponent( Graphics g ){
   super.paintComponent( g );
g.setColor(Color.blue);
g.setFont(new Font("Arial",Font.PLAIN, 22));
g.drawString(mensagem, 5, 25);
   for ( int i = 0; i < pointCount; i++ ){
   if (mouse[i] == "azul"){
	   g.setColor(Color.BLUE);
   }else if(mouse[i] == "vermelho"){
	   g.setColor(Color.red);
   }
   	  g.fillOval( points[ i ].x, points[ i ].y, 4, 4 );
   }
}
}

 

Eventos
Clicando com o mouse no círculo

OnClick

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
    boolean cor = false;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);

   }

   class Grafico extends JPanel {
       public Grafico(){
	  addMouseListener( new MouseAdapter(){
       public void mouseClicked(MouseEvent e) {
        if (ellipse.contains(e.getX(), e.getY())) {
           if (cor == false){
		      cor = true;
		   } else if(cor == true){
		      cor = false;
		   }
		repaint();
		}
      }});
	   }
       public void paintComponent(Graphics g){
      Graphics2D grp = (Graphics2D) g;
           if (cor == false){
		      grp.setPaint(Color.blue);
		   } else if(cor == true){
		      grp.setPaint(new Color(78,127,25));
		   }
      ellipse = new Ellipse2D.Double(25, 25, 100, 100);
      grp.fill(ellipse);
	   }
   }
}

DoubleClick

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
    boolean cor = false;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);

   }

   class Grafico extends JPanel {
       public Grafico(){
	  addMouseListener( new MouseAdapter(){
       public void mouseClicked(MouseEvent e) {
      if(e.getClickCount() == 2) {
        // Duplo-clique detectado
        if (ellipse.contains(e.getX(), e.getY())) {
           if (cor == false){
		      cor = true;
		   } else if(cor == true){
		      cor = false;
		   }
      } else {
        // Clique simples detectado.
      }
		repaint();
		}
      }});
	   }
       public void paintComponent(Graphics g){
      Graphics2D grp = (Graphics2D) g;
           if (cor == false){
		      grp.setPaint(Color.blue);
		   } else if(cor == true){
		      grp.setPaint(new Color(78,127,25));
		   }
      ellipse = new Ellipse2D.Double(25, 25, 100, 100);
      grp.fill(ellipse);
	   }
   }
}

Mouse Over, Mouse Out

Arquivo: javaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
    boolean cor = false;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);

   }

   class Grafico extends JPanel {
       public Grafico(){
	   addMouseMotionListener( new MouseMotionAdapter(){
       public void mouseMoved(MouseEvent e) {
        if (ellipse.contains(e.getX(), e.getY())) {
		      cor = true;

		   }else {
		      cor = false;
        }
			repaint();
		}});
	   }
       public void paintComponent(Graphics g){
      Graphics2D grp = (Graphics2D) g;
           if (cor == false){
		      grp.setPaint(Color.blue);
		   } else if(cor == true){
		      grp.setPaint(new Color(78,127,25));
		   }
      ellipse = new Ellipse2D.Double(25, 25, 100, 100);
      grp.fill(ellipse);
	   }
   }
}

Botão direito e botão esquerdo

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
    boolean cor = false;
    boolean valor = true;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);

   }

   class Grafico extends JPanel {
       public Grafico(){
	  addMouseListener( new MouseAdapter(){
       public void mouseClicked(MouseEvent e) {
        if (ellipse.contains(e.getX(), e.getY())) {
           if (e.isMetaDown()){
		      cor = true;
		   } else{
		      cor = false;
		   }
		valor = false;
		repaint();
		}
      }});
	   }
       public void paintComponent(Graphics g){
      Graphics2D grp = (Graphics2D) g;
           if (cor == false){
		      grp.setPaint(Color.blue);
		   } else if(cor == true){
		      grp.setPaint(new Color(78,127,25));
		   }
	  	   if (valor == true){
		   	  grp.setPaint(Color.red);
		   }
      ellipse = new Ellipse2D.Double(25, 25, 100, 100);
      grp.fill(ellipse);
	   }
   }
}

Mouse Wheel

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;

private String mensagem1 = "";
private String mensagem2 = "";

int x = 0;
int y = 0;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);
      g2D.setFocusable(true);
   }

   class Grafico extends JPanel {
       public Grafico(){
	  addMouseListener( new MouseAdapter(){
       public void mouseClicked(MouseEvent e) {
if(e.getButton() == 1){
mensagem2 = "Botão Esquerdo";
} else if(e.getButton() == 2){
mensagem2 = "Botão Central";
} else if(e.getButton() == 3){
mensagem2 = "Botão Direito";
}
repaint();
      }});

addMouseWheelListener(new MouseWheelListener() { 
public void mouseWheelMoved(MouseWheelEvent e) { 
y = e.getWheelRotation();
x = x + y;                
if (y < 0) { 
mensagem1 = "Para cima... " + y + " valor = " + x; 
} else if(y > 0) { 
mensagem1 = "Para baixo... " + y + " valor = " + x; 
} 
repaint();
   }});

	   }
       public void paintComponent(Graphics g){
super.paintComponent( g );
g.setColor(Color.blue);
g.setFont(new Font("Arial",Font.PLAIN, 12));
g.drawString("Mouse Wheel", 5, 25); 
g.drawString(mensagem1, 5, 50);
g.drawString(mensagem2, 5, 75);
	   }
   }
}

Teclado

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
private String mensagem = "A";

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);
      g2D.setFocusable(true);
   }

   class Grafico extends JPanel {
       public Grafico(){
    addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent tecla) {
    mensagem = "" + tecla.getKeyChar();
	repaint();
   }});

	   }
       public void paintComponent(Graphics g){
super.paintComponent( g );
g.setColor(Color.blue);
g.setFont(new Font("Arial",Font.PLAIN, 22));
g.drawString(mensagem, 5, 25);
	   }
   }
}

Dando nome ao Evento

Arquivo: JavaGrafico.java (Obs: Applet)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;

public class JavaGrafico extends JApplet {

    public Ellipse2D ellipse;
    private Grafico g2D;
    boolean cor = false;

      public void init() {

      Container ct = this.getContentPane();
      ct.setLayout(null);


      g2D = new Grafico();
      g2D.setBounds(0,0,150,150);
      ct.add(g2D);
      g2D.addMouseListener(new testandoMouse());
   }

   class Grafico extends JPanel {
       public Grafico(){
	   }
       public void paintComponent(Graphics g){
      Graphics2D grp = (Graphics2D) g;
           if (cor == false){
		      grp.setPaint(Color.blue);
		   } else if(cor == true){
		      grp.setPaint(new Color(78,127,25));
		   }
      ellipse = new Ellipse2D.Double(25, 25, 100, 100);
      grp.fill(ellipse);
	   }
   }
class testandoMouse extends MouseAdapter {
     public void mouseClicked(MouseEvent e) {
        if (ellipse.contains(e.getX(), e.getY())) {
           	if (cor == false){
		      cor = true;
		   	} else if(cor == true){
		      	cor = false;
		   	}
			repaint();
		}
	}
}
}

 

Salvado a imagem do gráfico

Exemplo:

Resultado:

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

import javax.imageio.*;
import java.io.*;
import java.awt.image.*;

public class JavaGrafico extends JFrame {

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Grafico g2D = new Grafico();

      g2D.setBounds(0,0,100,60);

      ct.add(g2D);
try {   
            BufferedImage dest = new BufferedImage(g2D.getWidth(), g2D.getHeight(), BufferedImage.TYPE_INT_ARGB);   
           
            Graphics2D graphics = dest.createGraphics();   

            g2D.paintComponent(graphics);
            graphics.dispose();   
            // png, gif ou jpg:
            ImageIO.write(dest, "png", new File("teste.png"));   
  
        } catch (Exception e) {   
            e.printStackTrace();   
        } 
      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
Graphics2D grp = (Graphics2D) g;

BufferedImage buffImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
Graphics2D gg = buffImage.createGraphics();
gg.setColor(Color.yellow);
gg.fillRect(0, 0, 10, 10);
gg.setColor(Color.black);
gg.drawRect(1, 1, 6, 6);
gg.setColor(Color.blue);
gg.fillRect(1, 1, 3, 3);
gg.setColor(Color.red);
gg.fillRect(4, 4, 3, 3);

grp.setPaint(new TexturePaint(buffImage, new Rectangle(10, 10)));

grp.fill(new Ellipse2D.Double(5, 5, 90, 50));
	   }
   }
}

Tonalidade

Arquivo: JavaGrafico.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.awt.geom.*;
import java.awt.image.*;

public class JavaGrafico extends JFrame {

      private Image img = null;
	  private JButton botao;
      private Grafico g2D;

      int teste = 0;

      public JavaGrafico() {

      super("Formulario");
      this.setSize(200,200);
      this.setLocation(50, 100);

      Container ct = this.getContentPane();
      ct.setLayout(null);

      Toolkit toolkit = getToolkit();
      img = toolkit.createImage("coracao.gif");


      g2D = new Grafico();
      g2D.setBounds(0,0,400,400);
      ct.add(g2D);

      botao = new JButton("tonalidade");
	  botao.setBounds(0,100,100,25);
	  ct.add(botao);

      Image Icone = Toolkit.getDefaultToolkit().getImage("icon.gif"); 
      setIconImage(Icone);

      this.setVisible(true);

      botao.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {

			 g2D.repaint();

      }});

       this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            System.exit(0);
      }});

   }
   public static void main(String[] args) {
      new JavaGrafico();
   }

   class Grafico extends JPanel {
       public void paintComponent(Graphics g){
Graphics2D grp = (Graphics2D) g;
int largura = img.getWidth(this);
int altura = img.getHeight(this);
int lay = 0;
if (teste == 0){
lay = BufferedImage.TYPE_INT_ARGB;
teste = 1;
}else if (teste == 1){
lay = BufferedImage.TYPE_INT_RGB;
teste = 2;
}else if (teste == 2){
lay = BufferedImage.TYPE_BYTE_GRAY;
teste = 3;
}else if (teste == 3){
lay = BufferedImage.TYPE_BYTE_BINARY;
teste = 0;
}
try {
BufferedImage buffImage = new BufferedImage(largura, altura, lay);

Graphics2D gg = buffImage.createGraphics();

gg.drawImage(img, 0, 0, largura, altura, this);

grp.setPaint(new TexturePaint(buffImage, new Rectangle(largura, altura)));
} catch(Exception rem){ /*erro removido e apagado*/ }

grp.fill(new Rectangle2D.Double(0, 0, largura, altura));
	   }
   }
}

Captura de cor

import java.awt.Robot;
.
.
public Color getPixelColor(int x, int y)