本人初学编程
Jpanel中随机显示图片,程序如下:/*方法1*/
private JLabel getMyLovePhotoLabel()
{
if (MyLovePhotoLabel == null)
{
MyLovePhotoLabel = new JLabel();
MyLovePhotoLabel.setText("");
MyLovePhotoLabel.setBounds(2, 2, 280, 418); ImageIcon Imageicon1 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\011.JPG");
ImageIcon Imageicon2 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\012.JPG");
ImageIcon Imageicon3 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\013.JPG");
ImageIcon Imageicon4 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\014.JPG");
ImageIcon Imageicon5 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\015.JPG");
ImageIcon Imageicon6 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\016.JPG");
ImageIcon Imageicon7 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\017.JPG");
ImageIcon Imageicon8 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\018.JPG");
ImageIcon Imageicon9 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\019.JPG");
ImageIcon Imageicon10 = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\020.JPG"); ImageIcon Imageout = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\020.JPG"); Random generator = new Random(); switch (generator.nextInt(10) + 1)
{
case 10:
Imageout = Imageicon10;
break;
case 9:
Imageout = Imageicon9;
break;
case 8:
Imageout = Imageicon8;
break;
case 7:
Imageout = Imageicon7;
break;
case 6:
Imageout = Imageicon6;
break;
case 5:
Imageout = Imageicon5;
break;
case 4:
Imageout = Imageicon4;
break;
case 3:
Imageout = Imageicon3;
break;
case 2:
Imageout = Imageicon2;
break;
case 1:
Imageout = Imageicon1;
break;
default:
break;
} Imageout.getIconWidth();
Imageout.getIconHeight(); MyLovePhotoLabel.setIcon(Imageout); }
return MyLovePhotoLabel;
} public static void main(String[] args)
{
MyLoveVisual test = new MyLoveVisual(); }
}

/*方法二*/
private static final ImageIcon Imaged1 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\011.JPG");
private static final ImageIcon Imaged2 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\012.JPG");
private static final ImageIcon Imaged3 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\013.JPG");
private static final ImageIcon Imaged4 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\014.JPG");
private static final ImageIcon Imaged5 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\015.JPG");
private static final ImageIcon Imaged6 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\016.JPG");
private static final ImageIcon Imaged7 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\017.JPG");  //  @jve:decl-index=0:
private static final ImageIcon Imaged8 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\018.JPG");
private static final ImageIcon Imaged9 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\019.JPG");
private static final ImageIcon Imaged10 = new ImageIcon("C:\\java_workspace\\MyLove\\photo\\020.JPG");


private JLabel getMyLovePhotoLabel()
{
if (MyLovePhotoLabel == null)
{
ImageIcon[] im={Imaged1,Imaged2,Imaged3,Imaged4,Imaged5,Imaged6,Imaged7,Imaged8,Imaged9,Imaged10};
Random generator = new Random();
int randomint=generator.nextInt(10);
JLabel MyLovePhotoLabel = new JLabel(im[randomint]);
MyLovePhotoLabel.setText("");
MyLovePhotoLabel.setBounds(2, 2, 280, 418);
MyLovePane.add(MyLovePhotoLabel);

}
return MyLovePhotoLabel;
}
现在的情况就是两种方法都不能随机显示图片,连MyLovePhotoLabel都没有显示。但是我如果修改为输出某一张图片,图片还是能显示的:
private JLabel getMyLovePhotoLabel()
{
if (MyLovePhotoLabel == null)
{
MyLovePhotoLabel = new JLabel();
MyLovePhotoLabel.setText("");
MyLovePhotoLabel.setBounds(2, 2, 280, 418); ImageIcon Imaged = new ImageIcon(
"C:\\java_workspace\\MyLove\\photo\\011.JPG");
                                     Imaged.getIconWidth();
Imaged.getIconHeight(); MyLovePhotoLabel.setIcon(Imaged); }
return MyLovePhotoLabel;
}请问我的问题出在哪?该怎么修改?另外,我装了VE,画出面板后都是出现的private JFrame或JPanel类,是不是在这些private类外加一个
public static void main(String[] args)
{
MyLoveVisual test = new MyLoveVisual(); }这样的函数就可以运行了?MyLoveVisual是我创建的public class。本人第一次发帖,先谢了。

解决方案 »

  1.   

    public  void randomIcon(JLabel lab){
        int ran=new Random().nextInt(10);
        ImageIcon imgIcon= new ImageIcon("C:\\java_workspace\\MyLove\\photo\\"+ran+".JPG");
        lab.setIcon(imIcon);
        lab.updateUI();
    }每调用一次上面的方法,就随机改变Label的图标一次。可以实现随机更换图片的目的。如果需要将图片显示在JFrame上的话。可以这样。
    完整代码:public class Test{
      public static void main(String[] args)
     {
      JFrame frame=new JFrame();
      JLabel label=new JLabel()
      frame.add(label);
      randomIcon(label);
      frame.pack();
      frame.setVisable(true);
     }
    }这样每次运行就会显示不同的图片
      

  2.   

    哈哈哈,多谢多谢,我终于解决了,还是用的数组,原来是我基础不牢,谢谢你提示给我的方法randomIcon(label)这个概念谢谢谢谢:)
      

  3.   


    不好意思,你说的是什么配置?不太懂,该怎么进行?面板更新就是2楼说的lab.updateUI(); 这个函数吧?我之前也不知道。。