模拟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) {

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值