⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 media.java

📁 图书馆座位管理系统
💻 JAVA
字号:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Media extends JPanel {
  public static void main(String[] args)
  {
    final JFrame frm = new JFrame("http://www.javaworld.com.tw/jute/post/view?bid=5&id=166668&sty=1&tpg=1&age=0");
    frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    BufferedImage cover = new BufferedImage(72 * 3, 72, BufferedImage.TYPE_INT_RGB);
    final Graphics g = cover.getGraphics();
    g.setColor(Color.BLUE);
    g.setFont(Font.decode("新細明體-PLAIN-64"));
    g.drawString("幻燈片", 0, 48);
    g.dispose();
    final Media c = new Media(cover);
    c.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e)
      {
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if (chooser.showOpenDialog(c) == JFileChooser.APPROVE_OPTION) {
          c.slideShow(chooser.getSelectedFile());
        }
      }
    });

    frm.getContentPane().add(c);

    final JLabel info = new JLabel("以滑鼠點擊視窗內部開啟對話盒以選取圖片檔案夾");
    info.setForeground(Color.RED);
    frm.getContentPane().add(info, BorderLayout.NORTH);
    frm.setSize(800, 600);
    frm.setVisible(true);
  }

  class FetchImage implements Runnable {
    private File directory;
    private boolean stop;

    public FetchImage(File directory)
    {
      this.directory = directory;
    }

    public void stopFetching()
    {
      stop = true;
    }

    public void run()
    {
      final FileFilter filter = new FileFilter() {
        public boolean accept(File pathname)
        {
          String name = pathname.getName().toLowerCase();
          return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".gif");
        }
      };

      final Toolkit toolkit = Toolkit.getDefaultToolkit();
      final File[] files = directory.listFiles(filter);
      final MediaTracker tracker = new MediaTracker(Media.this);
      int n = 0;
      for (int i = 0; i < files.length && !stop; ++i) {
        try {
          Image image = toolkit.getImage(files[i].getCanonicalPath());
          tracker.addImage(image, n);
          tracker.waitForID(n++);
          ig = image;
          repaint();
          Thread.sleep(3000);
        }
        catch (IOException e) {
          e.printStackTrace();
        }
        catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }

  private Image ig = null;
  private Thread slideThread;
  private FetchImage task;

  public Media(Image image)
  {
    this.setBackground(Color.black);
    ig = image;
  }

  public void paint(Graphics g)
  {
//    if (isOpaque()) {
//      Graphics dc = g.create();
//      dc.setColor(getBackground());
//      dc.fillRect(0, 0, getWidth(), getHeight());
//      dc.dispose();
//    }
    if (ig != null)
      g.drawImage(ig, 0, 0, 270, 260, this);
  }

  public void slideShow(File dir)
  {
    if (slideThread != null && slideThread.isAlive()) {
      task.stopFetching();
      try {
        slideThread.join();
      }
      catch (InterruptedException e) {
        e.printStackTrace();
      }
    }

    task = new FetchImage(dir);
    slideThread = new Thread(task);
    slideThread.start();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -