tem com mudar só a largura ou a altura de alguma imagem carregado por BufferedImage ?
Ninguem quis me ajudar então eu cacei a resposta em varios lugares e descobri como ajusta o tamanho do JFrame para caber a imagem e também, se a imagem for muito grande, ajustar a própria para caber dentro de um JFrame além de varias interações para pegar imagem da internet e colocar em um JLabel que está dentro de um JPanel que está dentro de um JFrame. Interação com o JFileChooser além de ajustar, como eu disse acima, ele seleciona apenas imagens e pastas para serem vizualizados. E muitas outras funções.
O código é esse:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/*
* @author Pixes
*/
class Janela extends JFrame{
JLabel lb_Endereco;
JLabel lb_Arquivo;
JLabel lb_Mensagem;
JLabel lb_NomeArquivo;
JButton bt_Carregar;
JButton bt_ir;
JPanel pn_Imagem = new JPanel();
JTextField tf_URL;
JFileChooser Ch_novo;
JFileChooser chooser = new JFileChooser();
int altura = 720;
int largura = 1008;
int larguraa = 1005;
int alturaa = 625;
public Janela() throws IOException{
this.setSize(600, 450);
{
lb_Endereco = new JLabel("Insira a URL:");
lb_Arquivo = new JLabel("Arquivo interno:");
lb_Mensagem = new JLabel("Identificações ...");
tf_URL = new JTextField(28);
lb_NomeArquivo = new JLabel("");
bt_Carregar = new JButton("Arquivo");
pn_Imagem = new JPanel ();
bt_ir = new JButton("Ir");
JPanel painelNorte = new JPanel();
JPanel Central = new JPanel();
painelNorte.setLayout(new GridLayout(2,3));
painelNorte.setBackground(Color.white);
Central.setBackground(Color.blue);
painelNorte.add(lb_Endereco);
painelNorte.add(tf_URL);
painelNorte.add(bt_ir);
painelNorte.add(lb_Arquivo);
painelNorte.add(lb_NomeArquivo);
painelNorte.add(bt_Carregar);
Central.add(pn_Imagem);
lb_Mensagem.setBackground(Color.white);
lb_Mensagem.setForeground(Color.red);
this.setLayout(new BorderLayout());
this.add("North", painelNorte);
this.add("Center", Central);
this.add("South", lb_Mensagem);
bt_ir.addActionListener( new ActionListener() {
@Override
@SuppressWarnings("empty-statement")
public void actionPerformed(ActionEvent e) {
if(tf_URL.getText().trim().equals("")){
JOptionPane.showMessageDialog(null, "Escreva algo no endereço");
}if(!tf_URL.getText().trim().equals("")){
String valor = tf_URL.getText();
BufferedImage image = null;
URL url = null;
try {
url = new URL(valor);
} catch (MalformedURLException ex) {
}
try {
image = ImageIO.read(url);
} catch (IOException ex) {
}
int width = getWidth();
int height = getHeight();
int widthh = image.getWidth();
int heightt = image.getHeight();
System.out.print("Nova imagem\n");
System.out.print(" largura = " + widthh);
System.out.print(" \n altura = " + heightt);
if(widthh >= largura || heightt >= altura){
Image imagem2;
int largurah = -1;
int alturah = -1;
System.out.print("\n imagem grande\n");
if(widthh >= largura){
System.out.print("redimensinado para, largura = " + larguraa + " \n");
imagem2 = image.getScaledInstance(larguraa, alturah, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
}
if(heightt >= altura){
System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
imagem2 = image.getScaledInstance(largurah, alturaa, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
}
else if(widthh >= largura && heightt >= altura){
System.out.print("redimensinado para, largura = " + larguraa + " \n");
System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
imagem2 = image.getScaledInstance(larguraa, alturaa, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
}
}
else{
JLabel label1 = new JLabel(new ImageIcon(image));
pn_Imagem.add(label1, BorderLayout.CENTER);
lb_Mensagem.setText(" Essa é uma nova informação ");
System.out.print(" \n imagem boa =D \n");
}
if(image.getWidth()>width){
width = image.getWidth();
}
if(image.getHeight()>height){
height = image.getHeight();
}
setSize(width,height);
}
}
});
bt_Carregar.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
JFileChooser arquivo = new JFileChooser();
arquivo.setDialogTitle("Escolha uma imagem");
arquivo.setFileFilter(new javax.swing.filechooser.FileFilter(){
@Override
public boolean accept(File f){
return f.getName().toLowerCase().endsWith(".jpg")
|| f.isDirectory()
|| f.getName().toLowerCase().endsWith(".png")
|| f.getName().toLowerCase().endsWith(".gif")
|| f.getName().toLowerCase().endsWith(".jpeg");
}
@Override
public String getDescription() {
return "Arquivos de imagem (.jpg, .png, .gif, .JPEG)";
}
});
int res = arquivo.showOpenDialog(null);
if(res == JFileChooser.APPROVE_OPTION){
try {
File arquivos = arquivo.getSelectedFile();
BufferedImage image = ImageIO.read(arquivos);
int width = getWidth();
int height = getHeight();
int widthh = image.getWidth();
int heightt = image.getHeight();
System.out.print("Nova imagem\n");
System.out.print(" largura = " + widthh);
System.out.print(" \n altura = " + heightt);
if(widthh >= largura || heightt >= altura){
Image imagem2;
int largurah = -1;
int alturah = -1;
System.out.print("\n imagem grande\n");
if(widthh >= largura){
imagem2 = image.getScaledInstance(larguraa, alturah, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
System.out.print("redimensinado para, largura = " + larguraa + " \n");
}
if(heightt >= altura){
imagem2 = image.getScaledInstance(largurah, alturaa, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
}
else if(widthh >= largura && heightt >= altura){
imagem2 = image.getScaledInstance(larguraa, alturaa, Image.SCALE_SMOOTH);
JLabel label1 = new JLabel(new ImageIcon(imagem2));
pn_Imagem.add(label1, BorderLayout.CENTER);
System.out.print("redimensinado para, largura = " + larguraa + " \n");
System.out.print("\n redimensinado para, altura = " + alturaa + " \n");
}
lb_Mensagem.setText(" Essa é uma nova informação de grande ");
}
else{
JLabel label1 = new JLabel(new ImageIcon(image));
pn_Imagem.add(label1, BorderLayout.CENTER);
//pn_Imagem.setVisible(true);
lb_Mensagem.setText(" Essa é uma nova informação ");
System.out.print(" \n imagem boa =D \n");
}
if(image.getWidth()>width){
width= image.getWidth();
}
if(image.getHeight()>height){
height = image.getHeight();
}
setSize(width,height);
} catch (IOException ex) {
System.out.print("Erro!");
}
}else
JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo.");
}
});
}
}
}
public class conta{
public static void main(String argumentos[]) throws IOException{
Janela jan = new Janela();
//jan.setSize(820,650);
TratEventosJan trat = new TratEventosJan();
jan.addWindowListener(trat);
jan.show();
}
}
class TratEventosJan extends WindowAdapter{
@Override
public void windowClosing(WindowEvent evento){
System.exit(0);
}
}
Obrigado.