JImagePanel Towel

Boa noite a todos, pesquisei recentemente no forum como adicionar imagem em JPanel, e encontrei alguns tópicos a respeito, um deles e oque mais me ajudou foi um onde o ViniGodoy recomendou o uso de um complemento para netbeans, da Towel, eu baixei, a versão 1.1 onde diz claramente que o JImagePanel esta adicionado ao projeto, no entanto ao adicionar o componente não aparece nada relacionado a Jpanel :S, não sei se eu ou quem fez algum besteira mais segue o print pra vocês conferirem…gostaria da ajuda de vocês pra usar este componente em meu projeto, eu baixei um outro, UGComp, ele funciona, mais ele não centraliza a imagem no painel, eu gostaria de exibir a imagem no tamanho original mesmo que ultrapasse o limite do painel ;s, agradeço a atenção de todos um abraço!

Eu acabei de verificar o Jar e a classe está lá sim.

Acho que o NetBeans que não está encontrando.

Estou usando a versõ 6.9.1 do netbeans, alguma idéia do porque isto pode estar acontecendo ? =/
Vou tentar pelo Linux mais tarde pra verificar se há algum problema na instalação ou configuração aqui ;s

Não tenho idéia de como o Netbeans funciona nessa parte.

Mas pelo que vi ali, a maioria daquelas classes não são “componentes” para ser adicionado na tela.

Boa noite!, Desculpa a demora, eu testei em outra instalação do NetBeans e aconteceu o mesmo, esse componente foi originalmente feito para Eclipse é isso? Alguém conseguiu usar o Tower-1.1.jar ai no netbeans? ;s

Ele é feito no Eclipse sim, mas acho que isso não devia fazer diferença, não tem nenhuma meneira de adicionar um componente manualmente na palheta do netbeans?

Boa tarde! Marky!, tem sim, achei um tópico aqui no GUJ que fala um pouco sobre isso, o problema é que eu estava pesquisando por componentes e na verdade se chama JavaBeans, eu criei uma classe com o código do JImagePanel, porém, pra poder adicionar como componente de paleta, os construtores não podem receber nenhum parâmetro, eu fiz a modificação e funcionou!, mais como o construtor não recebe uma Imagem e o método de desenhar a tela é chamado com BufferedImage = null, dava erro ao abrir, então coloquei IF e resolveu, segue abaixo o código, ja aviso que sou novo em OO rs.

[code]import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.TexturePaint;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

/**

  • A panel that contains a background image. The background image is

  • automatically sized to fit in the panel.
    */
    public class JImagePanel extends JPanel
    {
    private BufferedImage image = null;
    private FillType fillType = FillType.RESIZE;

    /**

    • Creates a new panel with the given background image.
    • @param img The background image.
      */
      public JImagePanel()
      {

    }

    /**

    • Changes the image panel image.

    • @param img The new image to set.
      */
      public final void setImage(BufferedImage img)
      {
      if (img == null)
      throw new NullPointerException(“Buffered image cannot be null!”);

      this.image = img;
      invalidate();
      }

    /**

    • Changes the image panel image.
    • @param img The new image to set.
    • @throws IOException If the file does not exist or is invalid.
      */
      public void setImage(File img) throws IOException
      {
      setImage(ImageIO.read(img));
      }

    /**

    • Changes the image panel image.
    • @param img The new image to set.
    • @throws IOException If the file does not exist or is invalid.
      */
      public void setImage(String fileName) throws IOException
      {
      setImage(new File(fileName));
      }

    /**

    • Returns the image associated with this image panel.
    • @return The associated image.
      */
      public BufferedImage getImage()
      {
      return image;
      }

    @Override
    protected void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g.create();
    fillType.drawImage(this, g2d, image);
    g2d.dispose();
    }

    /**

    • Returns the way this image fills itself.
    • @return The fill type.
      */
      public FillType getFillType()
      {
      return fillType;
      }

    /**

    • Changes the fill type.

    • @param fillType The new fill type

    • @throws IllegalArgumentException If the fill type is null.
      */
      public void setFillType(FillType fillType)
      {
      if (fillType == null)
      throw new IllegalArgumentException(“Invalid fill type!”);

      this.fillType = fillType;
      invalidate();
      }

    public static enum FillType
    {
    /**
    * Make the image size equal to the panel size, by resizing it.
    */
    RESIZE
    {
    @Override
    public void drawImage(JPanel panel, Graphics2D g2d,
    BufferedImage image)
    {
    if(image != null){
    g2d.drawImage(image, 0, 0, panel.getWidth(), panel.getHeight(),
    null);
    }
    }
    },

      /**
       * Centers the image on the panel.
       */
      CENTER
      {
          @Override
          public void drawImage(JPanel panel, Graphics2D g2d,
                  BufferedImage image)
          {
              if(image != null){
                  int left = (panel.getHeight() - image.getHeight()) / 2;
                  int top = (panel.getWidth() - image.getWidth()) / 2;
                  g2d.drawImage(image, top, left, null);
              }
          }
    
      },
      /**
       * Makes several copies of the image in the panel, putting them side by
       * side.
       */
      SIDE_BY_SIDE
      {
          @Override
          public void drawImage(JPanel panel, Graphics2D g2d,
                  BufferedImage image)
          {
              if(image != null){
                  Paint p = new TexturePaint(image, new Rectangle2D.Float(0, 0,
                          image.getWidth(), image.getHeight()));
                  g2d.setPaint(p);
                  g2d.fillRect(0, 0, panel.getWidth(), panel.getHeight());
              }
          }
      };
    
      public abstract void drawImage(JPanel panel, Graphics2D g2d,
              BufferedImage image);
    

    }
    }

[/code]

Pode criar a classe e usar este código ou segue o link do jar para netbeans
http://www.mediafire.com/?3rltpvv5njgx29r

Caso alguém não saiba, para adicionar a classe como paleta, clica com botão direito em cima da classe, vai em ferramentas > Adicionar a paleta.

Muito obrigado pela ajuda e atenção Marky! Um abraço!
Pode fechar o tópico.

Era mais fácil ter testado contra null apenas uma vez, logo abaixo da linha 82.

Nossa, orbigado Viny!, arrumei aqui :smiley: