Arquivo do Blog
Como criar animações
import java.applet.Applet; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class AppletAnimation extends Applet implements Runnable { int frameNumber = -1; int delay = 100; Thread animatorThread; boolean frozen = false; public void init() { String str; addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (frozen) { frozen = false; start(); } else { frozen = true; stop(); } } }); } public void start() { if (!frozen) { if (animatorThread == null) { animatorThread = new Thread(this); } animatorThread.start(); } } public void stop() { animatorThread = null; } public void run() { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); long startTime = System.currentTimeMillis(); Thread currentThread = Thread.currentThread(); while (currentThread == animatorThread) { frameNumber++; repaint(); try { startTime += delay; Thread.sleep(100); } catch (InterruptedException e) { break; } } } public void paint(Graphics g) { g.drawString("Frame " + frameNumber, 0, 30); } }
Como criar animações: Paint e Thread
import java.awt.Color; import java.awt.Graphics; import java.awt.Insets; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; public class Animate extends JFrame { private static int DELAY = 100; Insets insets; Color colors[] = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }; public void paint(Graphics g) { super.paint(g); if (insets == null) { insets = getInsets(); } // Calculate each time in case of resize int x = insets.left; int y = insets.top; int width = getWidth() - insets.left - insets.right; int height = getHeight() - insets.top - insets.bottom; int start = 0; int steps = colors.length; int stepSize = 360 / steps; synchronized (colors) { for (int i = 0; i < steps; i++) { g.setColor(colors[i]); g.fillArc(x, y, width, height, start, stepSize); start += stepSize; } } } public void go() { TimerTask task = new TimerTask() { public void run() { Color c = colors[0]; synchronized (colors) { System.arraycopy(colors, 1, colors, 0, colors.length - 1); colors[colors.length - 1] = c; } repaint(); } }; Timer timer = new Timer(); timer.schedule(task, 0, DELAY); } public static void main(String args[]) { Animate f = new Animate(); f.setSize(200, 200); f.show(); f.go(); } }
ADO – Localizando informações
Quando falamos a nível de dados (campos e registros), estamos tratando com o objeto Recordset. Vamos mostrar como encontrar dados específicos em um Recordset ADO. Lembrando que um objeto Recordset possui muitas funções úteis. Entre elas podemos citar as mais usadas: Bookmark, Find, Seek, Filter. Usando Bookmarks (marcadores) Um bookmark de um recordset é como um cursor que aponta para um registro específico dentro do Recordset identificando-o
Noise Image
import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.DataBuffer; import java.awt.image.DataBufferByte; import java.awt.image.IndexColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.util.Random; import javax.swing.JComponent; import javax.swing.JFrame; 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, new byte[] { (byte) 0, (byte) 255 }, new byte[] { (byte) 0, (byte) 255 }, new byte[] { (byte) 0, (byte) 255 }); 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) { /* die */ } } } 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(); f.add(new StaticGenerator()); f.setSize(300, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
Carnaval confunde Windows sobre novo horário
Uma mudança na data em que acaba o horário de verão no Brasil causou confusão entre usuários que não mantêm sua versão do Windows atualizada. Inicialmente, o governo brasileiro planejou o fim do horário de verão para o último domingo, dia 14, à zero hora. Esta informação consta no calendário do Windows, que muda os horários dos PCs automaticamente. Em
Hypnosis animation
import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Paint; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.GeneralPath; import javax.swing.JComponent; import javax.swing.JFrame; public class Hypnosis1 extends JComponent implements Runnable { private int[] coordinates; private int[] deltas; private Paint paint; public Hypnosis1(int numberOfSegments) { int numberOfCoordinates = numberOfSegments * 4 + 2; coordinates = new int[numberOfCoordinates]; deltas = new int[numberOfCoordinates]; for (int i = 0; i < numberOfCoordinates; i++) { coordinates[i] = (int) (Math.random() * 300); deltas[i] = (int) (Math.random() * 4 + 3); if (deltas[i] > 4) deltas[i] = -(deltas[i] - 3); } paint = new GradientPaint(0, 0, Color.blue, 20, 10, Color.red, true); Thread t = new Thread(this); t.start(); } public void run() { try { while (true) { timeStep(); repaint(); Thread.sleep(1000 / 24); } } catch (InterruptedException ie) { } } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Shape s = createShape(); g2.setPaint(paint); g2.fill(s); g2.setPaint(Color.white); g2.draw(s); } private void timeStep() { Dimension d = getSize(); if (d.width == 0 || d.height == 0) return; for (int i = 0; i < coordinates.length; i++) { coordinates[i] += deltas[i]; int limit = (i % 2 == 0) ? d.width : d.height; if (coordinates[i] < 0) { coordinates[i] = 0; deltas[i] = -deltas[i]; } else if (coordinates[i] > limit) { coordinates[i] = limit - 1;
Font size animation
import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class FontSizeAnimation extends JPanel implements ActionListener { Timer timer; int x = 1; float alpha = 1; public FontSizeAnimation() { timer = new Timer(8, this); timer.setInitialDelay(190); timer.start(); } public void paint(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; Font font = new Font("Dialog", Font.PLAIN, x); g2d.setFont(font); FontMetrics fm = g2d.getFontMetrics(); String s = "Java"; int w = (int) getSize().getWidth(); int h = (int) getSize().getHeight(); int stringWidth = fm.stringWidth(s); g2d.drawString(s, (w - stringWidth) / 2, h / 2); } public static void main(String[] args) { JFrame frame = new JFrame("FontSizeAnimation"); frame.add(new FontSizeAnimation()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { x += 1; alpha -= 0.0001; repaint(); } }
Fade out de uma imagem: a imagem vai ficando transparente gradualmente até que esteja completamente invisível
import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class FadeOutImage extends JPanel implements ActionListener { Image myImage = new ImageIcon("a.jpg").getImage(); Timer timer = new Timer(20, this); private float alpha = 1f; public FadeOutImage() { timer.start(); } public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha)); g2d.drawImage(myImage, 10, 10, null); } public void actionPerformed(ActionEvent e) { alpha += -0.01f; if (alpha <= 0) { alpha = 0; timer.stop(); } repaint(); } public static void main(String[] args) { JFrame frame = new JFrame("Fade out"); frame.add(new FadeOutImage()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 250); frame.setVisible(true); } }
A rotating and scaling rectangle
import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class SwingTimerBasedAnimationScaleRotate extends JPanel implements ActionListener { Timer timer; private double angle = 0; private double scale = 1; private double delta = 0.01; Rectangle.Float r = new Rectangle.Float(20, 20, 200, 200); public SwingTimerBasedAnimationScaleRotate() { timer = new Timer(10, this); timer.start(); } public void paint(Graphics g) { int h = getHeight(); int w = getWidth(); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.translate(w / 2, h / 2); g2d.rotate(angle); g2d.scale(scale, scale); g2d.fill(r); } public static void main(String[] args) { JFrame frame = new JFrame("Moving star"); frame.add(new SwingTimerBasedAnimationScaleRotate()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(420, 250); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { if (scale < 0.01) { delta = -delta; } else if (scale > 0.99) { delta = -delta; } scale += delta; angle += 0.01; repaint(); } }
Timer based animation
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class TimerBasedAnimation extends JPanel implements ActionListener { private Ellipse2D.Float ellipse = new Ellipse2D.Float(); private double esize; private double maxSize = 0; private boolean initialize = true; Timer timer; ActionListener updateProBar; public TimerBasedAnimation() { setXY(20 * Math.random(), 200, 200); timer = new Timer(20, this); timer.setInitialDelay(190); timer.start(); } public void setXY(double size, int w, int h) { esize = size; ellipse.setFrame(10, 10, size, size); } public void reset(int w, int h) { maxSize = w / 10; setXY(maxSize * Math.random(), w, h); } public void step(int w, int h) { esize++; if (esize > maxSize) { setXY(1, w, h); } else { ellipse.setFrame(ellipse.getX(), ellipse.getY(), esize, esize); } } public void render(int w, int h, Graphics2D g2) { g2.setColor(Color.BLUE); g2.draw(ellipse); } public void paint(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2.setRenderingHints(rh); Dimension size = getSize(); if (initialize) { reset(size.width, size.height); initialize = false; } this.step(size.width, size.height); render(size.width, size.height, g2); } public void actionPerformed(ActionEvent e) {
Is Event Dispatcher Thread
import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.AbstractAction; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTable; import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellRenderer; public class IsEDTExample extends JPanel { private boolean keepRunning; private static int RED = 0; private static int BLUE = 1; private static int GREEN = 2; private static int VARIABLE = 3; private static int SIZE = 3; private int threadShade; private ColorTableModel tableModel= new ColorTableModel(); private Thread colorShadeThread; public IsEDTExample() { JTable table = new JTable(tableModel); table.setRowHeight(100); table.setDefaultRenderer(Object.class, new ColorRenderer()); add(table); add(new JLabel("Thread Color Shade:")); ButtonGroup group = new ButtonGroup(); JRadioButton redOption = new JRadioButton("Red"); group.add(redOption); redOption.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { threadShade = RED; } }); JRadioButton blueOption = new JRadioButton("Blue"); group.add(blueOption); blueOption.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { threadShade = BLUE; } }); JRadioButton greenOption = new JRadioButton("Green"); group.add(greenOption); greenOption.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { threadShade = GREEN; } }); redOption.setSelected(true); this.threadShade = RED; add(redOption); add(greenOption); add(blueOption);
Como seria um mundo sem a Microsoft?
Uma nova era de inovação – ou caos em TI. Será que aplicações web poderiam substituir o Windows? Esse é o tipo do exercício mental que atiça a curiosidade. Como seria a vida sem o Microsoft Windows? Para o pessoal do software livre e de código aberto, o sumiço do Windows – e, por consequência, o fim da hegemonia da
iPad estreia em todo o mundo em março
A venda dos modelos sem suporte a redes 3G do iPad começa nos Estados Unidos e em um grupo de países selecionados no final de março. Entre estes países, devem estar o Canadá e os membros da União Europeia. É provável, no entanto, que a estreia dos modelos sem 3G no Brasil aconteça em pouco tempo, já que não há
Começar a Programar
Antes de começar a programar, é necessário saber algumas noções de programação, e essas noções envolvem principalmente o raciocínio lógico. A programação destina-se a resolver problemas da forma mais simples possível, eliminando processos redundantes e melhorando a obtenção de resultados. Estrutura da programação Análise do problema (dados de entrada, dados de saída, relações de transformação) Desenvolvimento do algoritmo Codificação na
Escreva e-mails corretamente no Live Mail
Adicione uma ferramenta de correção ortográfica ao programa Windows Live Mail para verificar erros em suas mensagens.
Quer dar um show no PowerPoint?
Confira uma coleção de truques e tutoriais para produzir melhor e mais rápido suas apresentações.
Preserve as fontes no PowerPoint
Mantenha a fidelidade visual das apresentações incorporando no arquivo os caracteres usados.
Acesse fácil os comandos do Office
Para evitar cliques, acrescente os comandos mais usados na Barra de Ferramentas de Acesso Rápido.
De uma apresentação, faça outras
Recurso do PowerPoint permite criar apresentações personalizadas tendo outro arquivo como base.
Encurte o caminho no Google Agenda
Em vez de usar o mouse, explore os atalhos de teclado para trabalhar mais rápido na agenda do Google
Controle de prazos com o ProcessMaker
Use o sistema de fluxo de trabalho gratuito ProcessMaker para manter equipes azeitadas e as tarefas sempre em dia.
Monte um servidor de e-mail com agenda e IMAP
Use o 602Lan Suite para criar um servidor local para trabalho colaborativo.
Outlook e Google Calendar em sincronia
Mantenha as agendas do Outlook e do Google Calendar sempre em sincronia com a ajuda do SyncMyCal.
Compartilhe textos no Zoho Writer
No programa online Zoho Writer, vários usuários podem compartilhar e editar o mesmo documento simultaneamente.
Del.icio.us armazena e compartilha favoritos
Crie uma conta no serviço del.icio.us para armazenar e compartilhar sua lista de sites favoritos.
Google Calendar offline com a ajuda do Calgoo
O Calgoo permite usar o Google Calendar offline, criar várias agendas e imprimir em três formatos.
Compartilhe pastas no Windows XP
Saiba como usar o Windows XP para compartilhar várias pastas de uma única vez.
Aproveite o texto das apresentações
Salve a apresentação como estrutura de tópicos para usar o conteúdo em relatórios e outros documentos.
Vídeos do YouTube no PowerPoint
Saiba como executar um vídeo disponível no YouTube em uma apresentação do PowerPoint 2007.
No PowerPoint, quem manda é o mestre
Veja como editar o slide mestre, alterar layouts e salvar as modificações para usar depois no PowerPoint 2007.
