Problema com JImagePanel?

4 respostas
fernandopaiva

Salve galera…

Seguinte, realmente não sei o que está acontecendo, testei um monte tanto com JDialog como com JFrame e não consigo fazer funcionar o JImagePanel…Pior que peguei um exemplo do site e funciona tranquilamente.

//meu codigo que fiz usando NetBeans, onde criei o JDialog pela IDE
public class Teste extends java.swing.JDialog {
   Teste(){
       inicializacao();
    }

    public void inicializacao() throws IOException{        
           InputStream imgStream = getClass().getResourceAsStream("/imagens/logo_painelCont.png");          
          BufferedImage image = ImageIO.read(imgStream);    
          JImagePanel painelPrincipal = new JImagePanel(image);          
          painelPrincipal.setFillType(JImagePanel.FillType.CENTER);          
          this.getContentPane().add(painelPrincipal);  
      }
}

A imagem nem é exibida, a não ser que eu de um " painelPrincipal.setSize(200,200) ". Não sei o que pode ser isso, com o exemplo que vi na internet nem precisa dar tamanho para o Panel e ainda alinha direitinho. O meu código com setSize() exibe a imagem mas não alinha…afff !!!

//exemplo que segui da internet.
public class JImagePanelSingleTest {
	    public static void main(String[] args) throws Throwable {
	        JImagePanel panel = new JImagePanel(
	                loadImage("/home/marcos/imgs/1.png"));
	 
	        panel.setFillType(JImagePanel.FillType.CENTER);
	 
	        JFrame frame = new JFrame();
	        frame.setPreferredSize(new Dimension(100, 100));
	        frame.add(panel);
	        frame.pack();
	        frame.setLocationRelativeTo(null);
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        frame.setVisible(true);
	    }
	 
	    private static BufferedImage loadImage(String file) throws IOException {
	        return ImageIO.read(new File(file));
	    }
	}

Ainda não consegui encontrar o problema que esta acontecendo com o meu codigo de não funcionar como deveria e ter que usar panel.setSize(200,200) para ser exibida a imagem.
Alguma sugestão ?

obrigado

4 Respostas

ViniGodoy

Qual layout manager você está usando?

Um JImagePanel é um painel como outro qualquer. Se você não colocar componentes em cima, e nem posicionar ele com algum layout, ele ficará com tamanho 0, como um painel normal ficaria.

Cleidson

tipo, ja aconteceu isso comigo mas consegui solucionar com uma coisa muito besta, mas vou citar aqui, vai que dar certo!
muda a extenção da imagem de png para jpg e ver o que acontece, teve uma vez que ao mudar a extenção da imagem, o meu problema foi solucionado!
creio eu que foi algum bug da Ide que estava usando!

fernandopaiva

Opa Vini ,mas no seu exemplo vc num seta nenhum LayoutManager e eu apenas copiei seu exemplo e coloquei aqui numa classe vazia do java e compilei, carregou direitinho.
Acho estranho, pq o meu como mostrei o codigo ae não funciona, eu tenho q colocar setSize() e ainda não exibe no centro do JFrame como no seu exemplo.

aff…to quebrando a cabeça aqui.

toda sugestão é sempre bem vinda.

//aqui o codigo com setSize(), ele exibe a imagem no painel mas não alinha ao centro.
 public void inicializacao() throws IOException{        
        InputStream imgStream = getClass().getResourceAsStream("/imagens/logo_painelCont.png");          
        BufferedImage image = ImageIO.read(imgStream);    
        JImagePanel painelPrincipal = new JImagePanel(image);          
        painelPrincipal.setSize(200,200);
        painelPrincipal.setFillType(JImagePanel.FillType.CENTER);          
        this.getContentPane().add(painelPrincipal);  
    }

obrigado.

ViniGodoy

Só consegui fazer um código simples assim e que funciona pq sei como funcionam os gerenciadores de layout.

Na verdade, esse código usa um sim, o padrão.

Criado 15 de julho de 2011
Ultima resposta 16 de jul. de 2011
Respostas 4
Participantes 3