模擬PPT 實現播放圖片

代碼如下

package com.xiaoqiang;

import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.event.AncestorListener;
/**
 * 本案例模擬PPT
 * @author xiaoqiang
 * @time 2017年5月6日
 */
public class SimulationPPT extends JFrame implements ActionListener,MouseListener{
    private Container con;
    private final String filePath = "./src/pic/";
    private File[] files = null;
    private ImageIcon[] imageIcons = null;
    private ImageIcon[] smallImageIcons = null;
    private JLabel centerLabel = new JLabel();
    private JButton nextPic = new JButton("下一頁");
    private JButton previousPic = new JButton("上一頁");
    private JLabel[] labels = new JLabel[6];
    private int nowPage = 0;
    private final int MAX_PAGE = 1;//最大頁數
    private final int MIN_PAGE = 0;//最小頁數
    public SimulationPPT() {
        this.draw();
    }
    private void draw() {
        con = this.getContentPane();
        con.setLayout(null);
        this.getImageIcon();
        this.getSmallImageIcon();
        this.setCenterLabel(0);
        con.add(centerLabel);
        con.add(nextPic);
        con.add(previousPic);

        centerLabel.setBounds(700, 100, 512, 512);
        previousPic.setBounds(100, 720, 100, 100);
        nextPic.setBounds(1680, 720, 100, 100);
        centerLabel.addMouseListener(this);
        previousPic.addActionListener(this);
        nextPic.addActionListener(this);
        for (int i = 0; i < labels.length; i++) {
            labels[i] = new JLabel(smallImageIcons[i]);
            con.add(labels[i]);
            labels[i].setBounds(300+230*i, 700, 128, 128);
            labels[i].addMouseListener(this);
        }   
        this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
        this.setVisible(true);
    }

    private void loadPage() {
        for (int i = 0; i < labels.length; i++) {
            labels[i].setIcon(smallImageIcons[i+nowPage*6]);
        } 
    }
    /**
     * 設置最中間 大圖片的位置
     * @param i
     */
    private void setCenterLabel(int i) {
        centerLabel.setIcon(imageIcons[i]);
    }
    private ImageIcon[] getImageIcon(){
        files = new File(filePath).listFiles();
        imageIcons = new ImageIcon[files.length];
        for (int i = 0; i < imageIcons.length; i++) {
            imageIcons[i] = new ImageIcon(files[i].getAbsolutePath());
        }
        return imageIcons;
    }
    /**
     * 把圖片轉化爲小圖片
     * @return
     */
    private ImageIcon[] getSmallImageIcon(){
        Image[] images = new Image[imageIcons.length];
        Image[] changedImages = new Image[imageIcons.length];
        smallImageIcons = new ImageIcon[imageIcons.length];

        for (int i = 0; i < images.length; i++) {
            images[i] = imageIcons[i].getImage();
            changedImages[i] = images[i].getScaledInstance(128, 128, Image.SCALE_REPLICATE);
            smallImageIcons[i] = new ImageIcon(changedImages[i]);
        }

        return smallImageIcons;
    }

    public static void main(String[] args) {
        new SimulationPPT();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if("上一頁".equals(e.getActionCommand())){
            if(nowPage == MIN_PAGE){
                JOptionPane.showMessageDialog(this, "已經是第一頁");
            }else{
                nowPage--;
                this.loadPage();        
            }
        } else if("下一頁".equals(e.getActionCommand())){
            if(nowPage == MAX_PAGE){
                JOptionPane.showMessageDialog(this, "已經最後一頁");
            }else{
                nowPage++;
                this.loadPage();        
            }
        }
    }
    @Override
    public void mouseClicked(MouseEvent e) {
        int i=-1;
        while(!e.getSource().equals(labels[++i]));
        System.out.println(i);
        this.setCenterLabel(i+nowPage*6);
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }
    @Override
    public void mouseReleased(MouseEvent e) {

    }
    @Override
    public void mouseEntered(MouseEvent e) {

    }
    @Override
    public void mouseExited(MouseEvent e) {

    }

}
發佈了39 篇原創文章 · 獲贊 35 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章