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

Propaganda
JAVA – APLICAÇÕES GRÁFICAS
Propriedades Utilizadas:
insira as propriedades escolhidas aqui
FACULDADE DE TECNOLOGIA SENAC PELOTAS
Nome do aluno: Fabiano Nobre Mendes
Identificação da Turma: ADS(Noturno)
Data: 16/05/2010
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
1
Nome da Propriedade 1
Noise Image
1.1
Introdução e Funcionamento
O funcionamento desta propriedade é bem simples ao compilar o código ele apresenta uma tela com
uma imagem pontilhada em amarelo e preto simulando uma TV quando está fora do ar
.
1.2
Código da aplicação
// java.awt contem todas as classes para a criação de interfaces graficas do usuario e para a pintura e
as imagens
import java.awt.Graphics; //importa uma biblioteca grafica
import java.awt.image.BufferedImage; // descreve uma imagem com um baffer de acesso de dados de
imagem
import java.awt.image.ColorModel; // esta classe abstrata define uma interface para extrair amostras de
pixels em uma imagem
import java.awt.image.DataBuffer; // esta classe existe para envolver uma ou mais matrizes de dados
import java.awt.image.DataBufferByte; // essa classe estende DataBuffer e armazena os dados
internamente como bytes
import java.awt.image.IndexColorModel;// classe que trabalha com valores de pixels em um mapa de
cores fixas
//no sRGB(criado pela power horse e microsoft) para uso em monitores, impressoras, e internet.
import java.awt.image.Raster;
//A classe que representa uma matriz retangular de pixels. A Raster encapsula um DataBuffer que
armazena os valores das amostras e um SampleModel que
//descreve como localizar um valor em uma determinada amostra DataBuffer.
import java.awt.image.WritableRaster; // Essa classe estende Raster para fornecer capacidades de
pixel por escrito
import java.util.Random; // Uma instância desta classe é usada para gerar um fluxo de números
pseudo-aleatório
import javax.swing.JComponent; // A classe base para o padrão e os componentes personalizados que
usam a arquitetura do Swing.
import javax.swing.JFrame; //Constrói um novo quadro que é inicialmente invisível.
//Esse construtor define componente local da propriedade para o valor retornado pelo
JComponent.getDefaultLocale.
public class StaticGenerator extends JComponent implements Runnable {
byte[] data;
BufferedImage image;
Random random;
public void initialize() {
int w = getSize().width, h = getSize().height;
int length = ((w + 7) * h) / 8;
data = new byte[length];
DataBuffer db = new DataBufferByte(data, length);
WritableRaster wr = Raster.createPackedRaster(db, w, h, 1, null);
ColorModel cm = new IndexColorModel(1, 2,
Faculdade Senac Pelotas
Página 2
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
new byte[] { (byte) 42, (byte) 248 },
new byte[] {(byte) 332, (byte) 221 },
new byte[] { (byte) 119, (byte) 7 });
image = new BufferedImage(cm, wr, false, null);
random = new Random();
new Thread(this).start();
}
public void run() {
while (true) {
random.nextBytes(data);
repaint();
try {
Thread.sleep(1000 / 24);
} catch (InterruptedException e) {
}
}
}
@Override
public void paint(Graphics g) {
if (image == null)
initialize();
g.drawImage(image, 0, 0, this);
}
public static void main(String[] args) {
JFrame f = new JFrame("Fabiano Nobre Mendes");
f.add(new StaticGenerator());
f.setSize(1400, 770);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
1.3
Propriedades utilizadas
Para criar o programa Noise Image foi importado o pacote “awt, útil, swing“ e instanciado os seguintes
objetos:
Grafhics: que importa a parte gráfica que será usada como exemploa cor atual, fonte atual e
coodenadas.
BufferedImage: que descreve um imagem com um baffer de acesso de dados de imagem ele é ainda
composto de uma colorModel e uma varredura.
ColorModel: esta classe abstrata define uma interface para extrair amostras de pixels em um imagem.
DataBuffer: esta classe envolve uma ou mais matrizes de dados
DataBufferByte: esta extende o Databuffer e armazena os dados como byte.
ÍndexColorModel: esta classe usa valore de pixels em um mapa de cores fixas no sRGB(criado pela
Power horse e microsoft) para uso em motores, impressoras e internet.
Raster: representa uma matriz de pixels.
WritablsRaster: esta fornece capacidade de pixels por escrito.
Útil.Random: gera um fluxo de de numero pseudo-aleatório.
Swing.Jcomponent: usa especificamente a arquitetura dó swing.
Swing.JFrame: constrói um quadro invisível
Faculdade Senac Pelotas
Página 3
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
Classes
A classe StaticGenerator utiliza o extends para trazer a herança contida na classe JComponents e
implementada com a própria interface gráfica Runnable, apartir disto será inserido o array byte[] data
as variaveis bufferedImage image e Random Ramdom.
O método initialize(); nele foi inserido as variáveis inteiras” w” contendo um getSize(). Width, h =
getSize().heigth , que ira receber a largura e altura, outra variável é a lenght que recebeu uma função
que será calculada. A variável data esta instanciando o vetor bayte que recebe a variável length, cria –
se a variável db que receberá data, lentgth após ser estendida pelo dataBufferbyte, a variável wr
recebe o através do raster.createpackedRaster as variáveis dB,w,h o numero 1 e null, a variável cm
esta intanciando a idexcColor Model que poderá ser utilizada para mudança de de cores no programa .
A variável image está está instanciando a bufferedimage com as variáveis cm, wr junto com o false,
null o random tambem está instanciando o random.
O método rum() está estendo um conteúdo da runnable, neste método foi criado um laço de repetição
que controla a atualização da imagem, ela joga um numero aletorio de números para dentro do array
data que depois solicita o repaint() que apaga e atualiza, feito isso ele interrompe por um determinado
espaço de tempo retornando novamente para o inicio do laço .
O método paint, tem um funcionamento bem simples que indica se a imagem for igual a nulo ela deve
começar na posição indicada pela extensão g.drawImage que no caso começa na posição(Y,X)= (0,0),
O método main, chama a janela JFrame e já identifica com o nome, nesta janela também é
adicionada a classe StaticGenerator o tamnaho que ela vai ter com setSize o padrão de fechamento
da janela com o setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) e o setVisible(true) que mostra
a imagem se for verdadeiro.
1.4
Visualização da Ferramenta em Funcionamento
Funcionamento normal.
Faculdade Senac Pelotas
Página 4
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
Alteração do método paint (0 , 20).
Alteração do método paint (20 , 0).
Faculdade Senac Pelotas
Página 5
JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS
1.5 Conclusão
- Descreva uma pequena conclusão sobre o que foi aprendido com a implementação deste aplicativo.
Aprendi como a imagem é criada, com as classe initialize() que constrói o conteúdo e cria as cores que
serão utilizadas na janela, o método run() que tem um temporizador que apaga e atualiza assim criando um
efeito de movimento na imagem e por ultimo como a imagem é dimensionada dentro da janela com o
método paint() e juntamente com o método main() que instancia a Jframe que é a janela em si.
- Incluir as dificuldades de compreensão do código que foi escolhido;
O grande desafio foi entender os pacotes e as suas funcionalidades, como foi utilizado e para que servia.
-Incluir os conhecimentos que foram agregados com o desenvolvimento do trabalho;
O funcionamento dos pacotes em si utilizados e suas extensões como por exemplo o g.drawImage,
Thread.sleep, byte[] etc...
Faculdade Senac Pelotas
Página 6
Download