Problemas para exibir duas imagens no mesmo Jframe[Resolvido]

2 respostas
D

Eu fiz esta classe, que extende de jPanel, para exibir minha imagem:

package imagem;

import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;


@SuppressWarnings("serial")
public class ExibirPainel extends JPanel {

	private static BufferedImage buffer;
	private static int cor;
	private int x;
	private int y;

	public ExibirPainel(int[][] matriz, int nLinha, int nColuna, int x, int y) {
		this.x = x;
		this.y = y;
		setSize(nLinha, nColuna);
		criaBuffer(matriz, nLinha, nColuna);
		repaint();
	}

	public static void criaBuffer(int[][] matriz, int nLinha, int nColuna) {
		buffer = new BufferedImage(nLinha, nColuna, BufferedImage.TYPE_INT_RGB);
		for (int i = 0; i < nLinha; i++) {
			for (int j = 0; j < nColuna; j++) {
				cor = aplicarCor(matriz[i][j]);
				buffer.setRGB(j, i, cor);
			}
		}
	}

	public static int aplicarCor(int corOriginal) {
		int cor = corOriginal;
		int red = cor << 16;
		int green = cor << 8;
		int blue = cor;
		cor = red + green + blue;
		return cor;
	}

	@SuppressWarnings("static-access")
	public BufferedImage getBuffer() {
		return this.buffer;
	}

	public void paint(Graphics imagem) {
		super.paint(imagem);
		imagem.drawImage(this.getBuffer(), x, y, this);
	}

	public JPanel getPanel(){
		return this;
	}
}

depois adiciono dois objetos em Jframe dessa forma:

package imagem;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import vetor.LBG;

public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Imagem imagem = new Imagem();
		imagem.carregarImagen();
		int iteracoes = 0;
		JFrame jFrame0 = null;		
		LBG dic128 =  new LBG(imagem.getMatrizImagen(),64);		
		
		try{
			jFrame0 = new JFrame();
			jFrame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame0.setSize((imagem.getLinha()+15)*2, (imagem.getColuna()+15)*2);
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			SwingUtilities.updateComponentTreeUI(jFrame0);
			jFrame0.setTitle("128");			
		}catch (Exception e) {
			System.out.println(e.getMessage());			
		}
		
		ExibirPainel imagemOriginal = new ExibirPainel(imagem.getMatrizImagen(),imagem.getLinha(),imagem.getColuna(),0,0); 
		jFrame0.add(imagemOriginal);
		
		do{
			dic128.limpar();
			dic128.partionamento();					
			iteracoes++;
			System.out.println(iteracoes);
			dic128.atualizaDicionario(iteracoes);			
		}while(dic128.parada(iteracoes));
		
		ExibirPainel panel0 = new ExibirPainel(dic128.getImgemQuantizadao(imagem.getLinha(),imagem.getColuna()),imagem.getLinha(), imagem.getColuna(),0,imagem.getColuna()+7);
		jFrame0.add(panel0);		
		jFrame0.setVisible(true);
		
	}

}

porém as imegens exibidas sempre são as mesma, não faço ideia porque isto esta acontecendo. Se alguem poder me ajudar agradeço.
Obrigado pela atenção.

2 Respostas

R

Você criou várias características do seu JPanel (tais como o buffer de imagem) como “static”, ou seja, todas as instâncias da classe COMPARTILHAM essas mesmas características, em vez de cada uma ter sua cópia privada:

Remova o termo “static” dessas características e deve funcionar.

D

Valeu cara era isso mesmo.

Criado 11 de junho de 2009
Ultima resposta 18 de nov. de 2009
Respostas 2
Participantes 2