Re: Display image selected from JFileChooser
On 6/14/2010 1:36 AM, jimmy wrote:
Oops! I'm really not doing well pasting code - I posted two copies of
the same class previously. The missing class is:
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionListener;
public class MyImageApp extends Component{
public static void main(String[] args){
JFrame myFrame = new JFrame();
myFrame.setTitle("Here's my Frame");
myFrame.setSize(200, 200);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.pack();
Action myAction = new MyAction();
JButton myButton = new JButton(myAction);
myFrame.add(myButton, BorderLayout.SOUTH);
MyImage core = new MyImage(myFrame);
myFrame.add(core, BorderLayout.CENTER);
core.MyAction();
}
}
This is too painful to watch anymore.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class test extends JPanel {
private BufferedImage image;
public test() {
setPreferredSize(new Dimension(400,300));
}
public void setImage(BufferedImage bi) {
image = bi;
setPreferredSize(new Dimension(bi.getWidth(),bi.getHeight()));
revalidate(); // tells the JScrollPane the size has changed
repaint(); // redraws the new image
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,null);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
final JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final test t = new test();
final JFileChooser chooser = new JFileChooser();
JMenuBar mb = new JMenuBar();
f.setJMenuBar(mb);
JMenu file = new JMenu("File");
mb.add(file);
JMenuItem mi = new JMenuItem("Open");
file.add(mi);
mi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (chooser.showOpenDialog(f) ==
JFileChooser.APPROVE_OPTION) {
try {
BufferedImage bi = ImageIO.read(
chooser.getSelectedFile());
if (bi != null)
t.setImage(bi);
else
JOptionPane.showMessageDialog(f,
"File is not an image!");
} catch (IOException ioe) {
JOptionPane.showMessageDialog(f,
"Error Reading File!");
}
}
}
});
f.add(new JScrollPane(t),BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
});
}
}
--
Knute Johnson
email s/nospam/knute2010/