//对于透明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(); } }

|