java Thread 圖片循環切換

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秒顯示下一張圖片。

自己定位圖片顯示的位置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章