Allora, ho utilizzato gli stessi procedimenti che ho usato per un'applet e lì mi funzionano, ma se uso Image in un'applicazione normale, mi da errore qui: image = getImage (getDocumentBase(), string);
codice:
import java.awt.Image;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JFileChooser;
import javax.swing.JButton;
public class Zoom extends JPanel
{
private JButton pic;
private JButton moreZoom;
private JButton lessZoom;
private Image image;
private static JPanel controlPanel;
private static JScrollPane scroll;
public Zoom()
{
pic = new JButton ("Choose a pic");
moreZoom = new JButton ("+");
lessZoom = new JButton ("-");
ButtonHandler handler = new ButtonHandler();
pic.addActionListener (handler);
moreZoom.addActionListener (handler);
lessZoom.addActionListener (handler);
controlPanel = new JPanel();
controlPanel.add (pic);
controlPanel.add (moreZoom);
controlPanel.add (lessZoom);
setPreferredSize (new Dimension (0, 0));
}
private class ButtonHandler implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
if (event.getSource() == pic)
{
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog (Zoom.this);
if (result == JFileChooser.APPROVE_OPTION)
{
String string = fileChooser.getSelectedFile().getPath();
if (string != null)
{
image = getImage (getDocumentBase(), string);
setPreferredSize (new Dimension (getWidth(), getHeight()));
scroll.updateUI();
repaint();
}
}
}
}
}
public void paintComponent (Graphics g)
{
super.paintComponent (g);
if (image != null)
g.drawImage (image, 0, 0, 300, 300, this);
}
public static void main (String[] args)
{
scroll = new JScrollPane(new Zoom());
JFrame frame = new JFrame ("Zoom");
frame.setSize (640, 480);
frame.setLocationRelativeTo (null);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.add (controlPanel, BorderLayout.NORTH);
frame.add (scroll);
frame.setVisible (true);
}
}