Gostaria de saber como faço para que uma imagem pequena seja automaticamente redimensionada em um JPanel ocupando TODO o seu espaço? Igual quando se insere um objeto num BorderLayout.CENTER e o objeto é redimensionado ocupando toda a área! Se eu uso um JLabel com a imagem e adiciono no painel o JLabel é redimensionado mas a imagem fica pequena! Alguma dica?
fabio eu sou iniciante em java e no forum, eu gostaria de saber se tem como eu fazer esse exemplo extendendo de um jframe,
te agradeço muito se puder me ajudar!
C
ChronosSage
importjava.awt.BorderLayout;importjava.awt.Graphics2D;importjava.awt.event.ComponentEvent;importjava.awt.event.ComponentListener;importjava.awt.geom.AffineTransform;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.imageio.ImageIO;importjavax.swing.ImageIcon;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JLabel;publicclassMainextendsJFrame{privateBufferedImagebi;privateJLabeljLabel_Imagem;publicMain(){JFileChooserjFileChooser=newJFileChooser();jFileChooser.showOpenDialog(null);Filearquivo=jFileChooser.getSelectedFile();//arquivotry{bi=ImageIO.read(arquivo);//carrega a imagem real num buffer}catch(IOExceptionex){Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null,ex);}//cria um jlabeljLabel_Imagem=newJLabel();//adiciona a acao de resizedjLabel_Imagem.addComponentListener(newComponentListener(){publicvoidcomponentResized(ComponentEvente){atualizarJLabel();}publicvoidcomponentMoved(ComponentEvente){}publicvoidcomponentShown(ComponentEvente){}publicvoidcomponentHidden(ComponentEvente){}});getContentPane().setLayout(newBorderLayout());getContentPane().add(BorderLayout.CENTER,jLabel_Imagem);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}publicvoidatualizarJLabel(){if(jLabel_Imagem.getSize().width==0||jLabel_Imagem.getSize().height==0)return;BufferedImageaux=newBufferedImage(jLabel_Imagem.getSize().width,jLabel_Imagem.getSize().height,bi.getType());//cria um buffer auxiliar com o tamanho desejadoGraphics2Dg=aux.createGraphics();//pega a classe graphics do aux para edicaoAffineTransformat=AffineTransform.getScaleInstance((double)jLabel_Imagem.getSize().width/bi.getWidth(),(double)jLabel_Imagem.getSize().height/bi.getHeight());//cria a transformacaog.drawRenderedImage(bi,at);//pinta e transforma a imagem real no auxiliarjLabel_Imagem.setIcon(newImageIcon(aux));// seta no jlabel}publicstaticvoidmain(String[]args){//testenewMain();}}