packageview.gui;importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjava.nio.file.Path;importjava.nio.file.Paths;importjavax.swing.JButton;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JOptionPane;publicclassCapturarImagemextendsJFrameimplementsActionListener{publicCapturarImagem(){super("Capturando Imagem");JButtonbotao=newJButton("Abrir Arquivo");botao.setFont(newFont("Serif",Font.PLAIN,26));botao.addActionListener(this);Containerc=getContentPane();c.add(BorderLayout.NORTH,botao);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(500,500);setVisible(true);}@OverridepublicvoidactionPerformed(ActionEvente){JFileChooserc=newJFileChooser();c.showOpenDialog(this);//abre o arquivoFilefile=c.getSelectedFile();//abre o arquivo selecionadotry{Pathpath=Paths.get(file.getAbsolutePath());}catch(Exceptione1){JOptionPane.showMessageDialog(this,"Não obteve o carregamento do arquivo");}}publicstaticvoidmain(String[]args){newCapturarImagem();}}
Minha duvida é como carregar um arquivo de imagem, mas o que quero saber mesmo é:
em um formulário o que seria melhor colocar a imagem no banco de dados e carregar ela quando fazer o select ou é melhor carregando em uma label ou carregar o arquivo de Imagem?
try{Pathpath=Paths.get(file.getAbsolutePath());ImageIconicon=newImageIcon(getClass().getResource("fotos/quebradebraço.jpg"));}catch(Exceptione1){JOptionPane.showMessageDialog(this,"Não obteve o carregamento do arquivo");}
e troquei o código no try…catch mas também não deu certo alguém pode de dar uma help?
BufferedImageimg;//ta como atributotry{Pathpath=Paths.get(file.getAbsolutePath());img=ImageIO.read(newFile("fotos/arvore.jpg"));}catch(Exceptione1){JOptionPane.showMessageDialog(this,"Não obteve o carregamento do arquivo");}
maiden
seguindo o tutorial que passei deu certo fazer a leitura:
packageiocompornentes;importjava.awt.Component;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjava.nio.file.Path;importjava.nio.file.Paths;importjavax.imageio.ImageIO;importjavax.swing.JFrame;/** * This class demonstrates how to load an Image from an external file * http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html */publicclassLoadImageAppextendsComponent{BufferedImageimg;publicvoidpaint(Graphicsg){g.drawImage(img,0,0,null);}publicLoadImageApp(){try{img=ImageIO.read(newFile("C:/Users/willame/git/UniversidadeXti/src/view/gui/fotos/arvore.jpg"));}catch(IOExceptione){e.printStackTrace();}}publicDimensiongetPreferredSize(){if(img==null){returnnewDimension(100,100);}else{returnnewDimension(img.getWidth(null),img.getHeight(null));}}publicstaticvoidmain(String[]args){JFramef=newJFrame("Load Image Sample");f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});f.add(newLoadImageApp());f.pack();f.setVisible(true);}}
Aqui faz a leitura corretamente fazendo o caminho corretamente onde fica a imagem img = ImageIO.read(new File(“C:/Users/willame/git/UniversidadeXti/src/view/gui/fotos/arvore.jpg”));
mas quando coloco esse mesmo caminho no código usando JFileChooser não funciona o carregamento da imagem, alguém sabe me dizer o porquê?
maiden
Na classe JFileChooser coloquei uma condição para a referencia img, e essa img está vindo null, mas estou inicializando a img isso que não to entendendo…
publicvoidactionPerformed(ActionEvente){JFileChooserc=newJFileChooser();c.showOpenDialog(this);//abre o arquivoFilefile=c.getSelectedFile();//abre o arquivo selecionadotry{if(img!=null){img=ImageIO.read(newFile("C:/Users/willame/git/UniversidadeXti/src/view/gui/fotos/arvore.jpg"));}else{JOptionPane.showMessageDialog(this,"Imagem não encotrada");}}catch(Exceptione1){e1.printStackTrace();JOptionPane.showMessageDialog(this,"Não obteve o carregamento do arquivo");}}
maiden
vi que a img tava vindo null mudei a posição conforme exibe logo abaixo, mas mesmo assim a imagem não carregou isso significa que img = ImageIO.read(new File(“C:/Users/willame/git/UniversidadeXti/src/view/gui/fotos/arvore.jpg”)); não está fazendo a leitura da imagem agora queria saber o porquê?
try{img=ImageIO.read(newFile("C:/Users/willame/git/UniversidadeXti/src/view/gui/fotos/arvore.jpg"));if(img!=null){JOptionPane.showMessageDialog(this,"Imagem carregada com sucesso!");}else{JOptionPane.showMessageDialog(this,"Imagem não encotrada");}}catch(Exceptione1){e1.printStackTrace();JOptionPane.showMessageDialog(this,"Não obteve o carregamento do arquivo");}
Ninguém aqui no fórum me ajudou, mas deu para resolver o problema o código final logo abaixo:
importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JRootPane;//carrega a imagem na mesma janela do botão@SuppressWarnings("serial")publicclassCapturarImagem2extendsJFrameimplementsActionListener{JFileChooserchooser;BufferedImageimg;JButtonbutton2;Filefile;JLabellabel;publicCapturarImagem2(){super("Capturar Imagem");setSize(450,450);//tamanho da janelaJPanelpanel=newJPanel();panel.setLayout(newBorderLayout());getContentPane().add(panel);chooser=newJFileChooser();label=newJLabel();JPanelsecpanel=newJPanel();setVisible(true);JRootPanecompPane=panel.getRootPane();ContainercontePane=compPane.getContentPane();contePane.add(secpanel);secpanel.add(label,BorderLayout.CENTER);button2=newJButton("carregar imagem");button2.addActionListener(this);panel.add(button2,BorderLayout.SOUTH);}protectedstaticImageIconcreateImageIcon(Stringpath){java.net.URLimgURL=CapturarImagem.class.getResource(path);if(imgURL!=null){returnnewImageIcon(imgURL);}else{System.err.println("Não foi possível encontrar o arquivo: "+path);returnnull;}}@OverridepublicvoidactionPerformed(ActionEvente){if(e.getSource()==button2){chooser.showOpenDialog(null);file=chooser.getSelectedFile();try{img=ImageIO.read(file);ImageIconicon=newImageIcon(img);label.setIcon(icon);DimensionimageSize=newDimension(icon.getIconWidth(),icon.getIconHeight());label.setPreferredSize(imageSize);label.revalidate();label.repaint();}catch(IOExceptione1){e1.printStackTrace();}}}publicstaticvoidmain(String[]args){newCapturarImagem();}}