18
Java 2D Marco Antonio

Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Embed Size (px)

Citation preview

Page 1: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Java 2DMarco Antonio

Page 2: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Java2D• Conjunto de classes para trabalhar com

gráficos e imagens.• A principal classe desta API é

JComponent.• Com esta classe é possível criar

componentes personalizados para suas aplicações gráficas.

Page 3: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

ComponenteGeometricopackage com.java2d.geometria;

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

import javax.swing.*;

@SuppressWarnings("serial")public class ComponenteGeometrico extends JComponent { private boolean solido; private Color cor; private double y; private double x;

public ComponenteGeometrico(boolean solido, Color cor, int x, int y) { this.solido = solido; this.cor = cor; this.x = x; this.y = y; }

@Override protected void paintComponent(Graphics g) { // super.paintComponent(g); // Graphics2D grafico = (Graphics2D) g; // grafico.setPaint(cor); Rectangle2D retangulo = new Rectangle2D.Double(x, y, 50, 50); if (solido) { grafico.fill(retangulo); } else { grafico.draw(retangulo); } }}

Page 4: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TelaDeTestepackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")public class TelaDeTeste extends JFrame { public TelaDeTeste() { // ComponenteGeometrico componente1 = new ComponenteGeometrico(true, Color.GRAY, 10, 10); getContentPane().add(componente1); // setSize(300, 200); setVisible(true); }

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

Page 5: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

ComponenteGeometrico• Acrescente os métodos de acesso como

no exemplo:

public void setX(double x) {

this.x = x;

}

public void setY(double y) {

this.y = y;

}

Page 6: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TesteMovimentacaoCompGeopackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")

public class TesteMovimentacaoCompGeo extends JFrame {

ComponenteGeometrico componente1;

public TesteMovimentacaoCompGeo() {

componente1 = new ComponenteGeometrico(true, Color.GRAY, 10, 10);

//

getContentPane().add(componente1);

//

setSize(300, 200);

setVisible(true);

}

public void movimentaComponente() {

int i = 0;

while (true) {

i++;

componente1.setX(10 + i);

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

new TesteMovimentacaoCompGeo().movimentaComponente();

}

}

Page 7: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TelaDeTestepackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")public class TelaDeTeste extends JFrame { public TelaDeTeste() { // ComponenteGeometrico componente1 = new ComponenteGeometrico(true, Color.GRAY, 10, 10); ComponenteGeometrico componente2 = new ComponenteGeometrico(false, Color.BLUE, 10, 10); componente1.setBorder(BorderFactory.createLoweredBevelBorder()); componente2.setBorder(BorderFactory.createLoweredBevelBorder()); getContentPane().setLayout(new GridLayout(1, 0)); getContentPane().add(componente1); getContentPane().add(componente2); // / setSize(300, 200); setVisible(true); }

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

Page 8: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Circulopackage com.java2d.geometria;

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

import javax.swing.*;

@SuppressWarnings("serial")public class Circulo extends JComponent { protected Color cor; protected int x; protected int y; protected int raio;

public Circulo(Color cor, int x, int y, int raio) { this.cor = cor; this.x = x; this.y = y; this.raio = raio; }

@Override protected void paintComponent(Graphics graficos) { super.paintComponent(graficos); Graphics2D g = (Graphics2D) graficos; g.setColor(cor);

Ellipse2D.Float circulo = new Ellipse2D.Float(x - raio, y - raio, raio * 2, raio * 2);

g.fill(circulo); }

}

Page 9: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TesteCirculopackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")public class TesteCirculo extends JFrame { public static void main(String[] args) { new TesteCirculo(); }

TesteCirculo() { // setSize(600, 400); // Circulo circulo = new Circulo(Color.BLUE, getWidth() / 2, getHeight() / 2, 80); getContentPane().add(circulo); // setVisible(true); // }}

Page 10: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Retangulopackage com.java2d.geometria;

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

import javax.swing.*;

public class Retangulo extends JComponent { protected Color cor; protected int x; protected int y; protected int largura; protected int altura; protected double angulo;

public void setAngulo(double angulo) { this.angulo = angulo; }

public Retangulo(Color cor, int x, int y, int largura, int altura) { this.cor = cor; this.x = x; this.y = y; this.largura = largura; this.altura = altura; }

protected void paintComponent(Graphics graficos) { super.paintComponent(graficos); Graphics2D g = (Graphics2D) graficos; // g.clearRect(0, 0, 600, 400); g.setColor(cor); Rectangle2D.Float retangulo = new Rectangle2D.Float(x, y, largura, altura); g.draw(retangulo); // }

Page 11: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Retangulo public void limpaTela() { Graphics2D g = (Graphics2D) getGraphics(); g.clearRect(0, 0, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height); }}

Page 12: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TesteRetangulopackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")public class TesteRetangulo extends JFrame { Retangulo retangulo;

TesteRetangulo() { // setSize(600, 400); // retangulo = new Retangulo(Color.BLUE, getWidth() / 2, getHeight() / 2, 40, 140); getContentPane().add(retangulo); // setVisible(true); // }

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

Page 13: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

CirculoListenerpackage com.java2d.geometria;

import java.awt.*;import java.awt.event.*;

import javax.swing.*;

@SuppressWarnings("serial")public class CirculoListener extends Circulo implements MouseListener { public CirculoListener(Color cor, int x, int y, int raio) { super(cor, x, y, raio); addMouseListener(this); }

@Override public void mouseClicked(MouseEvent e) { Point ponto = e.getPoint(); String mensagem = "Coordenada (x,y): " + ponto.x + ", " + ponto.y; JOptionPane.showMessageDialog(null, mensagem); }

@Override public void mouseEntered(MouseEvent e) { }

@Override public void mouseExited(MouseEvent e) { }

@Override public void mousePressed(MouseEvent e) { }

@Override public void mouseReleased(MouseEvent e) { }}

Page 14: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TesteCirculoListenerpackage com.java2d.geometria;

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")public class TesteCirculoListener extends JFrame { public static void main(String[] args) { new TesteCirculoListener(); }

TesteCirculoListener() { // setSize(600, 400); // CirculoListener circulo = new CirculoListener(Color.BLUE, getWidth() / 2, getHeight() / 2, 80); getContentPane().add(circulo); // setVisible(true); // }}

Page 15: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

PaintBrushpackage com.java2d.geometria;

import java.awt.*;import java.awt.event.*;import java.util.*;

import javax.swing.*;

@SuppressWarnings("serial")public class PaintBrush extends JComponent implements MouseListener { private Collection<Point> pontos; private int LARGURA = 8; private int ALTURA = 8;

public PaintBrush() { addMouseListener(this); }

@Override protected void paintComponent(Graphics g) { super.paintComponent(g); for (Point ponto : getPontos()) { g.fillOval(ponto.x - 5, ponto.y - 5, LARGURA, ALTURA); } }

public void mouseClicked(MouseEvent e) { getPontos().add(e.getPoint()); repaint(); }

public Collection<Point> getPontos() { if (pontos == null) { pontos = new ArrayList<Point>(); } return pontos; } //{... demais métodos da interface}}

Page 16: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

TestePaintBrushpackage com.java2d.geometria;

import javax.swing.*;

@SuppressWarnings("serial")

public class TestePaintBrush extends JFrame {

public static void main(String[] args) {

new TestePaintBrush();

}

TestePaintBrush() {

PaintBrush paint = new PaintBrush();

getContentPane().add(paint);

setSize(800, 600);

setVisible(true);

}

}

Page 17: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Atividades• Adicione as seguintes opções ao Paint.

– Combobox com as cores azul, branco e verde para o ponto desenhado e para o fundo de tela.

– Borracha.– Opção de criar uma linha arrastando o

mouse clicado sobre a tela.

Page 18: Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é

Atividades• Recrie o jogo snake.