//显示对象为jpg,gif canvas中画图使用double buffering,使用scroll bar显示,显示区域固定了,可以扩展成按照canvas的大小来显示的模式,因为canvas放在center位置。
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
class Frameext extends Frame
{
}
public class Images extends Frame implements ActionListener, WindowListener ,WindowStateListener
{
//Frameext fr = new Frameext();
Label Label1 = new Label(" ",Label.LEFT); //will show the file name
Button Button1 = new Button("open file");
int xpos,ypos;
int imageHeight;
int w,h;
Image offimg, bg;
Graphics offg;
boolean first=true;
//extends Canvas. This code will use its paint method.
public MyCanvas Canvas1 = new MyCanvas();
static Scrollbar horizontal, vertical; //scrollbar used
FileDialog fd = new FileDialog(this,"Open", FileDialog.LOAD);
Image Image1;
public void initialize()
{
//System.out.println(" dddddd "+this.MAXIMIZED_BOTH);
//this.setLocation(0, 0);
//this.setSize(this.getToolkit().getScreenSize());
this.setSize(600,600);
this.setLocation(30,30);
this.setBackground(Color.lightGray);
Canvas1.setBackground(Color.white);
Canvas1.setSize(580,580);
//ColorChooserDialog colorDialog = new ColorChooserDialog(this, "@fff", this);
this.add ("North", horizontal = new Scrollbar (Scrollbar.HORIZONTAL));
this.add ("East", vertical = new Scrollbar (Scrollbar.VERTICAL));
Panel pa=new Panel();
pa.setBackground(Color.white);
Label1.setBackground(Color.lightGray);
Label1.setAlignment(Label.LEFT);
pa.add(Label1);
pa.add(Button1); //add label and button on panel
this.add("South",pa); //add panel at south
this.add("Center",Canvas1);
this.addWindowListener(this);
this.addWindowStateListener (this);
Button1.addActionListener(this);
try
{
System.out.println ("getsize" + Canvas1.getSize () + "getwidth" + Canvas1.getWidth () +
"getheight " + Canvas1.getHeight ());
}
catch (Exception e)
{System.out.println(e.toString());
}
this.pack();
this.show();
}
void imageload ()
{ fd.setFile("*.jpg;*.gif"); //file speicific
fd.show();
if(fd.getFile() == null)
{
Label1.setText("You have not chosen any image files yet");
}
else
{
String d = (fd.getDirectory() + fd.getFile());
Image1 = Toolkit.getDefaultToolkit().getImage(d);
if(Image1==null)
{System.out.println("image is null of this file:"+ d);
return;
}
Label1.setText(d);
System.out.println("image loaded "+d);
//It is important to use Canvas1 as the ImageObserver.
MediaTracker mt = new MediaTracker(Canvas1); //here should be noticed like the author say
mt.addImage(Image1, 0);
try
{
mt.waitForAll();
}
catch (InterruptedException e)
{
System.out.println(e.toString());
}
w = Image1.getWidth (this);
h = Image1.getHeight (this); //set w and h the image's height and width
System.out.println("image width and height is"+w+" "+h);
if (offimg != null
&& (offimg.getHeight (this)