给button设置了一个图标,但是运行后不能显示,为什么呢?
如果不用setLayout(null);就可以显示,但是我要实现对button的移动,文档上说要实现就需要setLayout(null),结果现在连图标都看不到了.另外setLocation应该怎么用?
import javax.swing.*;
import java.awt.*;
public class ImageShow extends JFrame{
private JButton button;
private JPanel panel;

ImageIcon icon ;
ImageShow(){

    
button=new JButton();
panel=new JPanel();


panel.setLayout(null);
this.setSize(500,500);
icon=new ImageIcon(getClass().getResource("robot.gif"));
button.setIcon(icon);
this.getContentPane().add(panel);
panel.add(button);
setVisible(true);


}
public void move(int x,int y){

button.setLocation(200,500);

this.validate();

}
public static void main(String args[]){
ImageShow image=new ImageShow();

image.move(500,500);
}}

解决方案 »

  1.   

    将布局管理器设成null的话,在JButton被加入JPanel前先要设置JButton的位置。button.setBounds(new Rectangle(10,10, 30, 30));
      

  2.   

    同上
    将布局管理器设成null的话,在JButton被加入JPanel前先要设置JButton的位置。button.setBounds(new Rectangle(10,10, 30, 30));
    而且,如果JButton太小,也不会显示图象的.
      

  3.   

    setLocation只能设置位置,不能设置大小,还是用setBounds比较好.public void setLocation(int x,
                            int y)将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。 参数:
    x - 父级坐标空间中新位置左上角的 x 坐标
    y - 父级坐标空间中新位置左上角的 y 坐标public void setLocation(Point p)将组件移到新位置。通过点 p 来指定新位置的左上角。在父级坐标空间中给出点 p。 参数:
    p - 定义新位置左上角的点,在此组件的父级坐标空间中给出
      

  4.   

    很感谢你让我知道了icon=new ImageIcon(getClass().getResource("robot.gif"));这个方法~