WHO IS MVP 之二

  嗯本来是不打算写这篇的,可是同学说我之前的程序太丑了,MVP竟然连图都没有??很气,果断加图。不就是要MVP的照片么,给你就是了。

      emmm。。。可是,我才发现原来一直不会画图,程序和之前的差不多,多了几行画图的代码而已。

      程序最后的效果长这样:界面开始的样子。

       点击了Start按钮之后进入抽取MVP环节,结束后成第二张图:(嗯James是MVP)

    总结一下过程中我希望实现的功能及其解决步骤,

    1.让一开始的MVP奖杯作为窗体的背景,也就是窗体一打开就有。

       bug1: 我采用了之前学的先用ImageIcon对象加载图片,然后放在JLabel标签上,再将JLabel贴到面板上。1

                       程序运行后貌似和自己预期差不多,有背景了。可是到线程那边用同样的方法加载图片是才发现这是不对的;

                      心理活动就是:“震惊!!!我一直在添加图片而不是在覆盖图片!!!”

                       错误代码如下

		ImageIcon tu = new ImageIcon("C:/Users/john/Desktop/杂七杂八/tu/mvp.png");
		JLabel labelImg = new JLabel(tu);
		tupanel.add(labelImg);

  好的,方法一失败。我明白了贴图用在这里是不准确的,所以决定画图。

      bug2: 因为我的图片是画在放在west的一个JPanel对象tupanel上,所以就从tupanel上取得画笔再画。嗯,最后发现,报空指针异常了。我有点懵了。。然后才知道,取画笔还是应该在this.setVisible(true);之后取,而不是tupanel.setVisible(true);之后取。否则就空了。(具体原因还没搞懂)

          好了,改过来后,我有引用了一个工具包来获得图片,代码如下:

         g=tupanel.getGraphics();
	 Image image9 = Toolkit.getDefaultToolkit().getImage(	"C:/Users/john/Desktop/杂七杂八/tu/mvp.png");
	 g.drawImage(image9, 15, 15, 300, 350, null);

       bug3:  嗯,后来发现出不了图片,因为最后一个null参数的原因。

         最后一个参数ImageObserver observer,表示当转换了更多图像时要通知的对象。如果为null,则出不了图。改成this即可。

       bug4: 嗯为什么图片一下子就过去了??oh,重绘。所以我们应该将上面的代码放在paint(Graphics g)方法中,否则就是一闪而过。

    好了我想实现的第一个功能解决了。

    2.线程执行时,第x张图和第x个字符串同时出现。

  bug:因为字符串随机生成时我用str.leng去控制它,但是具体是第几个我没注意;而此时就需要注意图片的次序了,一开始是运行结果发现数组越界了,才想起来数组从0开始,我的判断条件却是从1开始的。。。

 OK,到此这个程序的改版工作已经结束了。 

线程部分的代码如下:

package Game180710gaiban;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Random;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class Lotterythread extends Thread {
	 private String str[]={"Lebron James","James Harden","Steven Curry","Kevin Duant","Ivring","Leonard"};
	 public  JLabel label;
	 public  volatile boolean flag=false;
	 public JPanel panel;
	 public WHOMVP w;

	 public Lotterythread(JLabel label,WHOMVP w){
		 this.label=label;
		 this.flag=flag;
		 this.panel=w.tupanel;
	//	 start();
	 }
	 
	 public void run(){
		 while(true){
			// System.out.println(flag);
			 if(flag)
			 {
				 int i=new Random().nextInt(str.length);

				 label.setText(str[i]);
				 
				 Graphics g=panel.getGraphics();
				 //震惊!!!我一直在添加图片而不是在覆盖图片!!!
			//	 System.out.println(label.getText());
				 Image tu1 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/james.png");
				 Image tu2 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/harden.png");
				 Image tu3 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/curry.png");
				 Image tu4 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/Durant.png");
				 Image tu5 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/iving.png");
				 Image tu6 = Toolkit.getDefaultToolkit().getImage("C:/Users/john/Desktop/杂七杂八/tu/Leonad.png");
				
				   if(i==0){ 
					   
					   g.drawImage(tu1, 15, 15, 300, 350, w);						
					}
				  else if(i==1){ 
					  g.drawImage(tu2, 15, 15, 300, 350, w);	
						}
				  else if(i==2){ 
					  g.drawImage(tu3, 15, 15, 300, 350, w);
					
						}
				  else if(i==3){ 
					  g.drawImage(tu4, 15, 15, 300, 350, w);						
						}
				  else if(i==4){ 
					  g.drawImage(tu5, 15, 15, 300, 350, w);				
						}
				  else if(i==5){ 
					  g.drawImage(tu6, 15, 15, 300, 350, w);					
						}
				 try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
					
					}
				
			 }
		 }
	 }
}

猜你喜欢

转载自blog.csdn.net/weixin_42574142/article/details/81174734
MVP