//对于透明gif有效
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SwingPic extends JFrame
{
// Picture file name
protected String filename = "", lastDir;
protected ImageIcon image;
Image im;
int height, width, count = 0;
JLabel labeledPic;
JScrollPane scroller;
Container content;
// Constructor
public SwingPic()
{
// Select local system look and feel
try
{
UIManager.setLookAndFeel(UIManager.
getCrossPlatformLookAndFeelClassName());
}
catch (Exception e)
{
}
// End program when window closes
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);}
}
);
setTitle("MJF Image Viewer");
MenuBar mbar = new MenuBar();
Menu m = new Menu("File");
m.add(new MenuItem("Open"));
m.add(new MenuItem("Exit"));
mbar.add(m);
setMenuBar(mbar);
setSize(800, 600);
}
// Load image from file
public void swingdraw()
{
if(count==1) //load new image how to despote image before
{ // Create a label to hold the image as an icon
labeledPic = new JLabel(image, JLabel.CENTER);
labeledPic.setText(filename);
// Create a scroller to hold the labeled image
scroller = new JScrollPane(labeledPic);
scroller.setPreferredSize(new Dimension(height, width));
// Add the scroller to the frame's content layer
content = getContentPane();
content.add(scroller);
this.show();
// Sets window's initial size
//repaint();
}
else if(count>1) //第二次就无法更新了,请大家看看如何实现可以更新。
{ // image.setImage();
labeledPic = new JLabel(image, JLabel.CENTER);
labeledPic.setText(filename);
System.out.println("new jlabel ");
// Create a scroller to hold the labeled image
scroller = new JScrollPane(labeledPic);
scroller.setPreferredSize(new Dimension(height, width));
//Let the scroll pane know to update itself
//and its scroll bars.
scroller.revalidate();
// content = getContentPane();
// content.add(scroller);
scroller.repaint();
// this.show();
}
}
public boolean action(Event evt, Object arg)
{
if(arg.equals("Open"))
{
FileDialog d =
new FileDialog(this, "Open image file", FileDialog.LOAD);
d.setFile("*.gif;*.jpg");
d.setDirectory(lastDir);
d.show();
String f = d.getFile();
lastDir = d.getDirectory();
if(f != null)
{ //image=Toolkit.getDefaultToolkit().getImage(lastDir+f);
// image = new ImageIcon(lastDir + f);
im = Toolkit.getDefaultToolkit ().getImage (lastDir + f);
if(im==null) return false;
image=new ImageIcon(lastDir+f);
height = image.getIconHeight();
width = image.getIconWidth();
System.out.println("new image icon"+height+" "+width);
}
System.out.println("new file"+lastDir+f);
count++;
swingdraw();
//repaint();
}
else if(arg.equals("Exit"))
System.exit(0);
else
return false;
return true;
}
public static void main(String[]args)
{
SwingPic app = new SwingPic();
app.setTitle("Swing Picture Demonstration");
app.show();
}
}