大家好,我编写了一个显示图片的程序,想让窗口随着图片的大小变化而调整。但程序运行后我发现:框架窗口初始化为最小值,只有当我最大化显示窗口后才能显示正常结果,请问这该如何调整,谢谢!代码如下所示:package test;import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;public class image
{
public static void  main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
imageFrame frame = new imageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}class imageFrame extends JFrame
{
public imageFrame() 
{
imageComponent component = new imageComponent();
add(component);

setSize(10, 10);

FRAME_WIDTH = component.getWidth();
FRAME_HEIGHT = component.getHeight();

setSize(FRAME_WIDTH, FRAME_HEIGHT);

ImageIcon icon = new ImageIcon(getClass().getResource("images.jpg"));
setIconImage(icon.getImage());
setTitle("ShowImage");

}

private int FRAME_WIDTH;
private int FRAME_HEIGHT;
}class imageComponent extends JComponent
{ private static final long serialVersionUID = 1L;
public imageComponent()
{
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(this);
path = chooser.getSelectedFile().getPath();
try
{
image = ImageIO.read(new File(path));
}
catch(IOException e)
{
e.printStackTrace();
}
}

public int getImageWidth()
{
return image.getWidth(this);
}

public int getImageHeight()
{
return image.getHeight(this);
}

public void paintComponent(Graphics g)
{
if(image == null)
return;

g.drawImage(image,0,0,this);
}

private String path;
private Image image;

解决方案 »

  1.   

    Swing啊 ,好久没用啦 哈 顶一个!
      

  2.   

    setSize(10, 10); ??
    初始化时候显示宽高各占10个像素?
    如果如你所说要随图片改变,那么,在读取过图片信息后再进行一次设置吧,例如按照图像尺寸设置。
    就你那些什么getImageWidth,getImageHeight。照这个设置你那个。
    比如g.drawImage(image,0,0,this); 后面
    setSize(getImageWidth, getImageHeight);
    这样运行。另外,提一句哈,最好创建一个panel或者
    cancas。然后将这个东西扔到jscrollpane中。不然当图像很大的时候,你还是看不全。只能看到屏幕范围内的部分,因为~~没有滚动条……
      

  3.   

    谢谢,我知道错误了,在给frame_width,和frame_height赋值时出现错误了!谢谢大家!