First, let’s start with a viewer code:
import java.awt.image.BufferedImage;
import java.awt.EventQueue;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class Visualizador {
public static void main(String[] args) {
if (args.length == 0) {
JOptionPane.showMessageDialog(null, "Escolha um arquivo para abrir.", "Visualizador", JOptionPane.INFORMATION_MESSAGE);
return;
}
if (args.length != 1) {
JOptionPane.showMessageDialog(null, "Não foi possível entender a linha de comando.", "Visualizador", JOptionPane.ERROR);
return;
}
BufferedImage img;
try {
img = lerImagem(args[0]);
if (img == null) throw new IOException();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "Não foi possível encontrar o arquivo " + args[0] + ".", "Visualizador", JOptionPane.ERROR);
return;
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Não foi possível ler o arquivo " + args[0] + ".", "Visualizador", JOptionPane.ERROR);
return;
}
EventQueue.invokeLater(() -> {
JLabel jl = new JLabel(new ImageIcon(img));
JFrame jf = new JFrame(args[0]);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.add(jl);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
});
}
private static BufferedImage lerImagem(String s) throws FileNotFoundException, IOException {
return lerImagem(new File(s));
}
private static BufferedImage lerImagem(File f) throws FileNotFoundException, IOException {
if (!f.exists()) throw new FileNotFoundException();
return ImageIO.read(f);
}
}
Note that the file name is read from the command line.
Compile with this:
javac -encoding UTF8 Visualizador.java
Perform like this:
java Visualizador teste.png
Where teste.png
is your image. If the image exists and is well formed, it will load. If it is not, a cute and friendly error message appears.
The programs that windows associates to file types are .exe
, .com
, .bat
, .pif
and .cmd
. How does that not include .jar
or .class
, create that file visualizador.bat
:
java Visualizador %1
So you can run it like this:
visualizador teste.png
Now, let’s associate the file. First, access the file type you want and go to the properties menu:
And then, click the button to change the default program:
And look up your application (in the above case the visualizador.bat
) in the list or click the button to find it somewhere else on your PC:
With this, by double clicking on the image, your program opens.
could better detail the scenario and/or add parts of the code?
– ronssm