java Thread 图片循环切换

    技术2022-05-20  35

    import java.awt.Image;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Timer;import java.util.TimerTask;

    import javax.swing.ImageIcon;

    /**

     * 以继承TimerTask类的方式实现多线程 */

    public class MyTimerTask extends TimerTask {

     private int index = 0; testPanel test=new testPanel(); private Timer timer = new Timer(); private static final Image pathtempImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header0.jpg").getImage();    private static final Image normalImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header1.jpg").getImage();    private static final Image activeImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header2.jpg").getImage();    private static final Image TImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header3.jpg").getImage();    private static final Image FImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header4.jpg").getImage();    private static final Image FRImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header5.jpg").getImage();    private static final Image SImg=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header6.jpg").getImage();    private static final Image[] imageArray=new Image[]{pathtempImg,normalImg,activeImg,TImg,FImg,FRImg,SImg};  Date d=new Date(); Date d2=new Date(); Calendar cpcalendar = new GregorianCalendar(); Calendar cpcalendar2 = new GregorianCalendar();  @Override public void run() {  String date1="2011-1-10 16:00:00";  String date2="2011-1-10 18:36:00";  SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  try {   d=f.parse(date1);   cpcalendar.setTime(d);

       d2=f.parse(date2);   cpcalendar2.setTime(d2);  } catch (ParseException e) {   e.printStackTrace();  }    Calendar c2 = Calendar.getInstance();  if(c2.getTimeInMillis() < cpcalendar.getTimeInMillis()){   test.setPanelImage(null);   System.out.println("节目单播放时间未开始!请等待ing....");  }  if(c2.getTimeInMillis()>cpcalendar.getTimeInMillis() && c2.getTimeInMillis()<cpcalendar2.getTimeInMillis()){   System.out.println("index="+index);   if(index==imageArray.length){    index=0;   }       test.setPanelImage(imageArray[index]);    index++;          System.out.println("线程运行中ing...当前时间:"+c2.getTime());  }  if(c2.getTimeInMillis() > cpcalendar2.getTimeInMillis()){   this.cancel();   timer=null;   test.setPanelImage(null);   System.out.println("节目单播放完成!");   return;  }   }

     public void start() {  timer.scheduleAtFixedRate(this, new Date(), 1000); // 设置定时任务执行时间,及其速率(2s执行一次)  System.out.println("开启线程:scheduled time : " + this.scheduledExecutionTime());

     } public long getScheduleTime() {

      return this.scheduledExecutionTime();

     } public static void main(String[] args) {

      MyTimerTask mtt = new MyTimerTask();

      mtt.start();

     }

    }

     

    ==========================

    import java.awt.Image;import java.io.IOException;import java.util.Timer;

    import javax.swing.Box;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel;

    public class testPanel {

     private JFrame f = new JFrame("测试"); private Box horizontal = Box.createHorizontalBox();

     public void setPanelImage(Image image){  horizontal.removeAll();  JTestPanel panel=new JTestPanel(image);  horizontal.add(panel);  f.add(horizontal);  f.setVisible(true); } /**  * Create the application.  */ public testPanel() {  init(); }

     public void init(){  //禁用窗口装饰品(最大化最小化)  f.setUndecorated(true);   //置顶显示  f.setAlwaysOnTop(true);  //这个就是设置窗口最大化  f.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);  f.getGraphicsConfiguration().getDevice().setFullScreenWindow(f);   //  f.setSize(415,280);  Image img=new ImageIcon("C://Users//Public//Pictures//Sample Pictures//header6.jpg").getImage();   JTestPanel panel=  new JTestPanel(img);        f.getLayeredPane().add(panel, new Integer(Integer.MIN_VALUE));    panel.setBounds(0, 0, new ScreenSize().getScreenWidth(),new ScreenSize().getScreenHeight());           ((JPanel)f.getContentPane()).setOpaque(false);  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  f.setVisible(true); }

    }

    ===============================

    import java.awt.*;

    import javax.swing.*;

    @SuppressWarnings("serial")public class JTestPanel extends JPanel{

        protected Image image;

        public JTestPanel(Image image){

            super();        this.image=image;

        }

      public void paintComponent(Graphics g)      {        super.paintComponent(g);

           //参数是定位图片的位置。

            if (this.image != null)   g.drawImage(this.image, 0, 0, 300,200, this);      }

    }

     

    ===============================

    /** * 获取屏幕分辨率 * @author cmxie * */public class ScreenSize { /**  * 屏幕的宽  */ private int screenWidth; /**  * 屏幕的高  */ private int screenHeight; /**  * 设置屏幕的宽  * @param screenWidth  */ public void setScreenWidth(int screenWidth){  this.screenWidth = screenWidth; } /**  * 获取屏幕的高  * @return  */ public int getScreenHeight() {  setScreenHeight((int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().height);  return screenHeight; } /**  * 设置屏幕的高  * @param screenHeight  */ public void setScreenHeight(int screenHeight) {  this.screenHeight = screenHeight; } /**  * 获取屏幕的宽  * @return  */ public int getScreenWidth() {  setScreenWidth((int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width);  return screenWidth; }

     public static void main(String [] args){  System.out.println("width="+new ScreenSize().getScreenWidth());  System.out.println("heigh="+new ScreenSize().getScreenHeight()); } }

     

    ==============================

    图片循环显示,每隔n秒显示下一张图片。

    自己定位图片显示的位置。

     


    最新回复(0)