import java.awt.*;
import java.awt.event.*;
class xt extends Frame{
win w;
static Image im;
xt(){
im=getToolkit().getImage("E:\\休闲\\变形金刚\\2009310102233116_l.jpg"); //(1)
int n=xt.im.getWidth(this);
System.out.println(n); //(2)
w=new win(this);
w.setSize(600,400);
w.setVisible(true);
setVisible(true);
setSize(800,600);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
);
} public static void main(String in[]){
xt xto=new xt();
}}class win extends Window{
win(Window w){
super(w);
}
public void paint(Graphics g){
g.drawImage(xt.im,0,0,600,400,this);
}
}
以上(1)处的图片可以正常显示,
但(2)处打印出的宽度是-1,是为什么?我想做个根据图片尺寸自动调整窗口大小的程序,
但无法获得正确的尺寸。请各位帮我看看什么原因.
import java.awt.event.*;
class xt extends Frame{
win w;
static Image im;
xt(){
im=getToolkit().getImage("E:\\休闲\\变形金刚\\2009310102233116_l.jpg"); //(1)
int n=xt.im.getWidth(this);
System.out.println(n); //(2)
w=new win(this);
w.setSize(600,400);
w.setVisible(true);
setVisible(true);
setSize(800,600);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
);
} public static void main(String in[]){
xt xto=new xt();
}}class win extends Window{
win(Window w){
super(w);
}
public void paint(Graphics g){
g.drawImage(xt.im,0,0,600,400,this);
}
}
以上(1)处的图片可以正常显示,
但(2)处打印出的宽度是-1,是为什么?我想做个根据图片尺寸自动调整窗口大小的程序,
但无法获得正确的尺寸。请各位帮我看看什么原因.
win(Window w){
super(w);
System.out.println(xt.im.getWidth(this));
}
class xt extends Frame{
win w;
static Image im;
xt(){
im=getToolkit().getImage("F:\\大杂烩\\图片\\326.gif"); //(1)
int n=xt.im.getWidth(this);
System.out.println(n); //(2)
w=new win(this);
w.setSize(600,400);
w.setVisible(true);
int width = w.getImgWidth();
System.out.println("width is :"+width);
setVisible(true);
setSize(800,600);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
);
}
public static void main(String in[]){
xt xto=new xt();
}
}class win extends Window{
win(Window w){
super(w);
}
public int getImgWidth(){
return xt.im.getWidth(this);
}
public void paint(Graphics g){
g.drawImage(xt.im,0,0,600,400,this);
}
}
运行结果:
-1
width is :100
你再看看这段代码,这段代码比较简单,可能更容易定位问题import java.awt.*;
import java.awt.event.*;public class smp111 extends Frame
{
public static void main(String args[])
{
smp111 frm=new smp111();
} Image img;
smp111()
{
setSize(440,380);
setBackground(Color.cyan);
setVisible(true);
Toolkit tk=getToolkit();
img=tk.getImage("E:\\休闲\\Rihanna04.jpg"); //(1)
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});
} public void paint (Graphics g)
{
int wt=img.getWidth(this);
int ht=img.getHeight(this);
g.drawImage(img,20,55,wt/2,ht/2,this);
System.out.println(wt+" "+ht);
try{
Thread.sleep(500);
}catch(Exception e){}
}
}其中(1)处用自己的图片代替,我把显示尺寸的语句放在了paint()中,
程序运行后,你不断的把窗口最小化再还原,反复多次,
每次都会调用paint()方法,每次都会打印尺寸。第一次打印两个-1,
后面打印的都是正确值,
哪位高手来解释下,这是为什么?