使用布局是gridbaglayout,用jLabel来从(0,0)位置显示BufferedImage,启动后,从jLabel相应鼠标移动事件取得的数据来看,图像确实显示在0,0的位置,但是如果把窗口放大了,图像的显示位置变得居中,而jLabel显示图像的位置发生了变化,自动变成了(0,150)的点开始画图像。这个开始显示的位置能不能控制呢?比如窗口变动后,依然从(0,0)位置显示图形,能不能做到呢?

解决方案 »

  1.   

    没有代码不好帮你判断问题,你说得“自动变成了(0,150)的点”是怎么回事,gridbaglayout布局管理器中(0, 150)表示行与列,而非象素点。
      

  2.   

    使用jLabel来画Image,比如jJlabel1.drawImage(0,0....),这个(0,0)就是Image左上角在jlabel上的坐标吧,但是当窗口大小变动的时候,这个jlabel需要填充一些位置,他的大小变了,但是刚刚drawImage(0,0....)的图像,开始画的位置就变了,不在jlabel的(0,0)了,而是变了,比如(0,20)这样的位置了。如果想控制jlabel大小变了的情况下图像画的位置,应该从哪里着手啊?
      

  3.   

    上面说错了。jlabel没有drawImage.
    已经有一个正常的BufferedImage,想画到jlabel上,我用方法是jlabel1.setIcon(new ImageIcom(image)),我想要控制当label变动后image显示在label上的位置,有什么办法?
      

  4.   

    好像你的问题只需要把JLabel定位在左上角(0,0)位置就可以了?
    int anchor = GridBagConstraints.NORTHWEST;

    int fill = GridBagConstraints.BOTH;建议使用其它布局管理器,gridbaglayout不太容易操纵。
      

  5.   

    我看了一下,应该说不是布局的事,我的标题写错了。我想要图像总是从jlabel的左上角开始画,但是一旦窗口大小变了,图像显示的位置就变了。