JAVA – APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Resize

Propaganda
JAVA – APLICAÇÕES GRÁFICAS
Propriedades Utilizadas:
Resize Shape
Basic Shape
FACULDADE DE TECNOLOGIA SENAC PELOTAS
Nome do aluno: Marri Souza da Luz
Identificação da Turma: 3º ADS - Noite
Data: 13/05/2010
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
1 Nome da Propriedade Resize a shape
1.1 Introdução e Funcionamento
Esta propriedade trata das dimenssões de uma forma(Shape), proporcionando redimensionar o seu
tamanho sempre que disparados eventos executados pelo mouse.
A aplicação desenha uma forma retangular na tela com pontos em suas diagonais, ao clicar nos
pontos é possível redimensionar a forma movendo o ponto em alguma direção.
1.2 Código da aplicação
import
import
import
import
import
import
java.awt.Graphics;
java.awt.Graphics2D;
java.awt.Point;
java.awt.event.MouseAdapter;
java.awt.event.MouseEvent;
java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ResizeRectangle extends JPanel {
private int SIZE = 8;
private Rectangle2D[] points = { new Rectangle2D.Double(50, 50,SIZE, SIZE
), new Rectangle2D.Double(150, 100,SIZE, SIZE) };
Rectangle2D s = new Rectangle2D.Double();
ShapeResizeHandler ada = new ShapeResizeHandler();
public ResizeRectangle() {
addMouseListener(ada);
addMouseMotionListener(ada);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < points.length; i++) {
g2.fill(points[i]);
}
s.setRect(points[0].getCenterX(), points[0].getCenterY(),
Math.abs(points[1].getCenterX()-points[0].getCenterX()),
Math.abs(points[1].getCenterY()- points[0].getCenterY()));
g2.draw(s);
}
class ShapeResizeHandler extends MouseAdapter {
Faculdade Senac Pelotas
Página 2
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
Rectangle2D
private int
public void
Point p =
r = new Rectangle2D.Double(0,0,SIZE,SIZE);
pos = -1;
mousePressed(MouseEvent event) {
event.getPoint();
for (int i = 0; i < points.length; i++) {
if (points[i].contains(p)) {
pos = i;
return;
}
}
}
public void mouseReleased(MouseEvent event) {
pos = -1;
}
public void mouseDragged(MouseEvent event) {
if (pos == -1)
return;
points[pos].setRect(event.getPoint().x,event.getPoint().y,points[pos]
.getWidth(),
points[pos].getHeight());
repaint();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Resize Rectangle");
frame.add(new ResizeRectangle());
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
1.3 Propriedades utilizadas
package trabalhopoo;
//importação das bibliotecas utilizadas nesta aplicação
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Rectangle2D;
Faculdade Senac Pelotas
Página 3
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
import javax.swing.JFrame;
import javax.swing.JPanel;
//Criando uma classe estendendo a JPanel
public class ResizeRectangle extends JPanel {
//criou uma variável para dimensionar posições no vetor
private int SIZE = 8;
//criando um vetor Do tipo rectangle2D points
private Rectangle2D[] points = { new Rectangle2D.Double(50, 50,SIZE, SIZE), new
Rectangle2D.Double(150, 100,SIZE, SIZE) };
//criando outro objeto s do tipo Rectangle2D
Rectangle2D s = new Rectangle2D.Double();
//objeto do tipoShapeResizeHandler
ShapeResizeHandler ada = new ShapeResizeHandler();
//método construtor
public ResizeRectangle() {
addMouseListener(ada);
addMouseMotionListener(ada);
}
public void paintComponent(Graphics g) {
//chamando uma função da super-classe
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//percorrer tamanho do vetor incrementando i
//reinderizando (preenchendo) os pontos e criando a forma
for (int i = 0; i < points.length; i++) {
g2.fill(points[i]);
}
//obtendo as coordenados do retatangulo através dos getCenter x e y
s.setRect(points[0].getCenterX(), points[0].getCenterY(),
Math.abs(points[1].getCenterX()-points[0].getCenterX()),
Math.abs(points[1].getCenterY()- points[0].getCenterY()));
//métodos Math.abs retorna o valor absoluto para calcular as dimencoes
g2.draw(s);
}
//classe estendida redimensionado com o mouse
class ShapeResizeHandler extends MouseAdapter {
Rectangle2D r = new Rectangle2D.Double(0,0,SIZE,SIZE);
private int pos = -1;
Faculdade Senac Pelotas
Página 4
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
//método q dispara valor da variável quando pressionado o Mouse
public void mousePressed(MouseEvent event) {
Point p = event. getPoint();
//Percorrer vetor em todo seu tamanho
//incrementando i - para cada posisao
//contem o objeto p - retornando as posições x e y
for (int i = 0; i < points.length; i++) {
if (points[i].contains(p)) {
pos = i;
return;
}
}
}
//quando o mouse e liberado aciona este método
public void mouseReleased(MouseEvent event) {
//pos assume valor -1
pos = -1;
}
//quando o mouse se meche e algum botão dele e pressionado
public void mouseDragged(MouseEvent event) {
//if de verificação verifica se pos==1
//retorna
if (pos == -1)
return;
//
points[pos].setRect(event.getPoint().x,event.getPoint().y,points[pos].getWidth(),
points[pos].getHeight());
repaint();
}
}
//método principal q dispara todos os métodos mencionados nele
public static void main(String[] args) {
//instanciando uma classe
//criando um objeto frame do tipo JFrame
JFrame frame = new JFrame("Resize Rectangle");
//chamando os métodos
frame.add(new ResizeRectangle()); //gerando o retangulo
frame.setSize(300, 300); //passando os valores iniciais
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);//tornando visivel
}
}
Faculdade Senac Pelotas
Página 5
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
1.4 Visualização da Ferramenta em Funcionamento
Criando o retângulo:
Mudando o ponto x para outro ângulo:
Faculdade Senac Pelotas
Página 6
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
1.5 Conclusão
Esta classe desenha e redimensiona um retângulo de acordo com os pontos iniciais definidos
na variável SIZE. Através destes pontos o usuário altera sua forma, diminuindo, aumentando,
encolhendo, expandindo, para direita, para esquerda para cima e para baixo. Esta alterações se
dão através de eventos do mouse:
mousePressed - dispara valor da variável quando pressionado o Mouse;
mouseReleased – dispara quando o mouse e liberado;
mouseDragged - quando o mouse se meche e algum botão dele e pressionado dispara
comandos;
Técnicas utilizadas para construção da classe:
Herança;
Criação do Objeto(Instância da Classe);
Método Construtor;
Operador ponto, dando acesso os métodos e variáveis de Instância;
Super Classe;
Faculdade Senac Pelotas
Página 7
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
A dificuldade de compreender a parte de criação e implementação do frame.
Faculdade Senac Pelotas
Página 8
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
2 Nome da Propriedade Basic Shape
2.1 Introdução e Funcionamento
Esta propriedade molda linhas, curvas e quadrados apartir de um ponto inicial do desenho atual.
2.2 Código da aplicação
package trabalhopoo;
import java.awt.geom.GeneralPath;
public class BasicShapes {
public static void main(String[] args) {
GeneralPath shape = new GeneralPath();
shape.moveTo(1, 1);
shape.lineTo(2, 2);
shape.quadTo(3, 3, 4, 4);
shape.curveTo(5, 5, 6, 6, 7, 7);
shape.closePath();
}
}
2.3 Propriedades principais utilizadas
package trabalhopoo;
import java.awt.geom.GeneralPath;
public class BasicShapes {
//método principal
public static void main(String[] args) {
//Criando objeto do tipo GeneralPath
GeneralPath shape = new GeneralPath();
//move a posição do desenho atual ate as posiçoes definidas em (x,y)
shape.moveTo(1, 1);
//desenha uma linha apartir da posicao inicial do desenho atual
shape.lineTo(2, 2);
//desenha um quadrado
shape.quadTo(3, 3, 4, 4);
//desenha uma curva usando o estilo de linha atual a partir
//da posição de desenho atual até (âncoraX, âncoraY) e
//usando o ponto de controle especificado por (controleX, controleY)
shape.curveTo(5, 5, 6, 6, 7, 7);
Faculdade Senac Pelotas
Página 9
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
//fecha o caminho
shape.closePath();
}
}
2.4 Visualização da Ferramenta em Funcionamento
Não possui imagens a classe não está compilando.
2.5 Conclusão
A dificuldade que encontrei no código foi de não conhecer a fundo a classe generalPath,
assim dificulta a compreensão deste. As variáveis de instância ficaram subintendidas. Embora esta
classe seja menor que a anterior é complicado para entender.
Faculdade Senac Pelotas
Página 10
Download