domingo, 3 de fevereiro de 2013

Redimensionar Imagem e mostrar em JLabel

Uma mão segurando uma régua
























Hoje veremos como redimensionar uma imagem e visualizá-la em um JLabel...

import java.awt.Dimension;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Redimensionar extends JFrame {
 
 /* O método redimensionar retorna uma imagem redimensionada. Vamos agora explicar o significado de cada parâmetro.
   
   [imagePath] é caminho da imagem. exemplo: "/D:/images/myPhoto.png"
   
   [d] é Dimensões da nova imagem, exemplo: 
     Dimension dimensao = new Dimension(largura,comprimento);
     
   [scale] Algoritmo para redimensionar, pode ser um dos seguintes valores :
       java.awt.Image.SCALE_DEFAULT
       java.awt.Image.SCALE_FAST
       java.awt.Image.SCALE_SMOOTH
       java.awt.Image.SCALE_REPLICATE
       java.awt.Image.SCALE_AREA_AVERAGING
 
  */
 
 public Redimensionar(){
  super("Redimensionar");
  setLayout(null);
  
  
  Dimension dimensao = new Dimension(400,400);
  
  ImageIcon img = Redimensionar.redimensionar("/media/Files Bank/Images/Ubuntu /digital_bokeh-wallpaper-1366x768.jpg", dimensao,java.awt.Image.SCALE_DEFAULT);
  JLabel lblImage = new JLabel(img);
  
  lblImage.setBounds(10, 10, 400, 400);
  getContentPane().add(lblImage);
  
  setSize(500,500);
  setVisible(true);
  
 }
 
 

 public static ImageIcon redimensionar(String imagePath, Dimension d,int scale){
  
  //Carrega a imagem 
  ImageIcon img = new ImageIcon(imagePath);
  
  //Redimenciona a imagem usando as dimensões passadas como parâmetro e o respectivo algoritmo
  Image newImg=img.getImage().getScaledInstance(d.width, d.height, scale);
  
  //Gera uma nova Imagem
  ImageIcon img_ = new ImageIcon(newImg);
  
  return img_;
  
 
 }
 
 public static void main(String args[]){
  Redimensionar app = new Redimensionar();
 }

}


Até a próxima.. Juízo....



terça-feira, 29 de janeiro de 2013

JList com imagens e alinhamento (JList e ImageIcon)

Às vezes precisamos deixar as nossas aplicações com uma aparência especial. Com certeza haverão vários posts do género, aqui no amador em java sobre essa matéria, mas, já agora, indo directo ao ponto, eu vou mostrar, neste curto exemplo, como colocar imagnes em Items de uma JList e como alinhar cada Item.

Para começar, é preciso escrevermos o nosso prório ListCellRenderer, ou seja, uma classe que implementa a interface javax.swing.ListCellRenderer;

Por quê?
É muito simples. Quando um Item é adicionado ao modelo da lista, ele passa pelo Renderizador (ListCellRenderer). O renderizador padrão é o DefaultListCellRenderer, mas, ele não é capaz de realizar o nosso desejo de colocar figurinhas junto com o texto na JLIST, então nós vamos escrever o nosso próprio renderizador. Dê uma olhadela no conteúdo do ficheiro CustomListCellRenderer.java logo à seguir.

import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingConstants;




public class CustomListCellRenderer implements ListCellRenderer {

 @Override
 public Component getListCellRendererComponent(JList list, Object value,
   int index, boolean isSelected, boolean cellHasFocus) {
  
  //Instancia um JLabel e define a imagem a ser visualizada
  JLabel label= new JLabel(new ImageIcon("checkbox.png"));
  //Define o texto do JLabel
  label.setText(value.toString()); 
  
  //Quando o item é seleccionado, é ao mesmo tempo alinhado ao centro. 
  if(isSelected)
   label.setHorizontalAlignment(SwingConstants.CENTER);
  else
   label.setHorizontalAlignment(SwingConstants.LEFT);
  
  
  //Retorna o Label
  return label;
 }

}

Vejamos agora o código do formulário de teste ( ListaIconeFrame.java)

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;


public class ListaIconeFrame extends JFrame {

 public ListaIconeFrame(){
  super("Exemplo");
  setSize(400,400);
  
  //Cria uma instância de modelo de lista.
  DefaultListModel model = new DefaultListModel();
  
  JList list = new JList();
  
  //Cria uma instância do renderizador de células da lista.
  CustomListCellRenderer renderer = new CustomListCellRenderer();
  
  //Define o renderizador da lista
  list.setCellRenderer(renderer);
  //Define o modelo da lista
  list.setModel(model);
  
  //Adiciona elementos ao modelo
  model.addElement("Mário Júnior");
  model.addElement("Aurio Tino");
  model.addElement("Amilton Mário");
  model.addElement("Nelton John");
  model.addElement("Suzete das Dores");
  
  //Define a localização da lista do formulário. 
  list.setBounds(10, 10, 380, 380);
  
  
  this.setLayout(null);
  this.getContentPane().add(list);
  
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setVisible(true);
 
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  ListaIconeFrame app = new ListaIconeFrame();

 }

}

Executado este código temos o seguinte resultado:



Até o próximo post. Fuuuuuuuuuuuuuuui.


Um exemplo básico de Threads (A patroa e a empregada)




Às vezes precisamos fazer duas coisas simultaneamente em um programa. Para isso temos que usar Threads. Para instanciar uma Thread é necessário uma referência de um objecto de um objecto que implemente a interface java.lang.Runnable. 

Uma aplicacao tem no mininmo uma Thread. O metodo man cria a thread principal e nós programaticamente podemos criar outras. Neste caso, a thread principal é "a dona da casa" e a thread secundaria é a "empregada".

O exemplo a seguir é composto por duas classes (Empregada.java & DonaDaCasa). Apenas uma delas implementa a interface Runnable, neste caso a classe Empregada.

Não faz sentido!
Você deve estar se perguntado por quê a outra classe não implementa a interface Runnable! É muito simples, eu já havia dito que quando uma aplicação inicia, é criada uma thread, a quem damos o nome de Thread principal, neste caso, a nossa Thread principal será a "dona de casa" e a Thread secundária será a "empregada", por uma simples questão de lógica, uma vez que a patroa sempre tem prioridade.

Cadê as classes?
Eis o código do ficheiro DonaDaCasa.java


public class DonaDaCasa { 
 
  public static void main(String[] args){
  
  
  //Instancia a classe Empregada que é Runnable
  Empregada empregada = new Empregada();
  //Cria a Thread actividades passando a referencia da empregada como parâmetro.
  Thread actividades = new Thread(empregada);
  //Inicia a thread actividades
  actividades.start();
  
  
  try {
  System.out.println("Dona da casa : Dormindo"); 
  Thread.sleep(1023);//Interrompe a Thread por 1023 milisegundos
  System.out.println("Dona da casa : Tomando o pequeno almoço");
  Thread.sleep(1023); 
  System.out.println("Dona da casa : Nadando na piscina");
  
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }

}


Ficheiro Empregada.java
//Classe que implemente a Interface Runnable

public class Empregada implements Runnable {
 
 public void run() {
  
  try {
  System.out.println("Empregada : Fazendo compras no supermercado");   
  Thread.sleep(1056);//Interrope a thread por 1056 milisegundos.   
  System.out.println("Empregada : Cozinhando");
  Thread.sleep(1056); 
  System.out.println("Empregada : Lavando a roupa");
  Thread.sleep(1056); 
  System.out.println("Empregada : Limpando a casa");
  
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 

}


Saída do programa:


Dona da casa : Dormindo
Empregada : Fazendo compras no supermercado
Dona da casa : Tomando o pequeno almoço
Empregada : Cozinhando
Dona da casa : Nadando na piscina
Empregada : Lavando a roupa
Empregada : Limpando a casa


Até a próxima.


sábado, 26 de janeiro de 2013

Como colocar imagem em JButton

//Consideremos que existe uma imagem "flash.png" no directório do projecto da aplicação. 

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class JButtonIcon extends JFrame {
 
 JButton butImg = null;
 public JButtonIcon() {
  super();
  setTitle("Teste de Botão");
  setSize(250,100);
  setLayout(null);
  
  //Instancia o JButton e usa um ImageIcon como parâmetro.
  butImg = new JButton(new ImageIcon("flash.png"));
  //Define texto do JButton
  butImg.setText("Image Button");
  //Define a localização do Jbutton no formulário.
  butImg.setBounds(10, 10, 230, 35);
  //Adiciona o Jbutton ao formulario
  getContentPane().add(butImg);
  
  
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setLocationRelativeTo(null);
  setVisible(true);
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  

  JButtonIcon teste = new JButtonIcon();
  

 }

}

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cheap international voip calls