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.