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

📄 fullscreenwindow.java

📁 java写的图片浏览器,类似acds
💻 JAVA
字号:
package org.net9.oops.jsee;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//import javax.swing.event.*;
//import java.io.*;
//import java.util.*;

public class FullScreenWindow extends JWindow {
    ImageIcon splashIm;
    Dimension screenDim;
    JLabel label;
//    JScrollPane pane;
    ViewerScrollPane pane;
    JViewport viewport;

    boolean Open_Next_Image = false;
    boolean Open_Previous_Image = false;
    final Jsee dummy;
    JPopupMenu menu;
    SlideShow sthread;
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

    JScrollBar vbar, hbar;
    int lastMouseY, lastMouseX;

    float zooming = 1;

    Cursor handCursor, defaultCursor;

    //popup menu
    JMenuItem slideshow_item;
    JMenuItem stop_slideshow_item;

    public class SlideShow extends Thread {
        long minSlide;
        boolean foward;
        public SlideShow(long min, boolean f) {
            minSlide = min;
            foward = f;
        }
        public void run() {
          while (true) {
            try {
              if (!OpenNextImage(dummy.GetNextImage(), foward))
                this.stop();
              Thread.sleep(minSlide);
            } catch (InterruptedException i) {/*continue;*/}
          }
        }
    }
/*
    public FullScreenWindow(JCDSee parent, String filename) {
        super(parent);
        dummy = parent;
//        splashIm = parent.Load_Image(filename);
        PlanarImage src = JAI.create("fileload", filename);
        try {
          splashIm = new ImageIcon(src.getAsBufferedImage());
        } catch (RuntimeException re) {
          FileInputStream inStream;
          try {
              //inStream = new FileInputStream(filename);
              splashIm = new ImageIcon(PcxReader102V01.loadImage(new FileInputStream(filename)));
          } catch (FileNotFoundException e) {}
            catch (NullPointerException npe) {}
          if (splashIm.getIconHeight() < 0) {
            System.out.println("This is not an image file or not supported by JAI");
            return;
          }
        }
        init();
    }
*/
    public FullScreenWindow(Jsee parent, ImageIcon imageicon) {
        super(parent);
        dummy = parent;
        splashIm = imageicon;
        init();
    }

    public void init() {
        screenDim = Toolkit.getDefaultToolkit().getScreenSize();

        setSize((int)screenDim.getWidth(),(int)screenDim.getHeight());
//        setForeground(Color.black);
//        label = new JLabel( splashIm );
        pane = new ViewerScrollPane( splashIm );
        pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

        handCursor = new Cursor(Cursor.HAND_CURSOR);
        defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);

        final int imageHeight = splashIm.getIconHeight();
        final int imageWidth = splashIm.getIconWidth();

        // set cursor if image is scrollable
        if (imageWidth > screenDim.getWidth() || imageHeight > screenDim.getHeight())
        { // mean the image is larger than screen size
            setCursor(handCursor);
        }
        else {
            setCursor(defaultCursor);
        }
        // end cursor

        // doing the key scroll
        vbar = pane.getVerticalScrollBar();
        hbar = pane.getHorizontalScrollBar();

        addKeyListener( new Listen() );

        // menu section
        menu = new JPopupMenu();

        final JMenuItem NextImage_item = new JMenuItem("Next Image", new ImageIcon(getClass().getResource("image/nextImage.gif")));
        final JMenuItem PreviousImage_item = new JMenuItem("Previous Image", new ImageIcon(getClass().getResource("image/previousImage.gif")));
        final JMenuItem ZoomIn_item = new JMenuItem("Zoom in", new ImageIcon(getClass().getResource("image/ZoomIn.gif")));
        final JMenuItem ZoomOut_item = new JMenuItem("Zoom out", new ImageIcon(getClass().getResource("image/ZoomOut.gif")));
        
        final JMenuItem Rotate_item = new JMenuItem("Rotate", new ImageIcon(getClass().getResource("image/rotate.gif")));
        final JMenuItem hflip_item = new JMenuItem("Horizontal flip", new ImageIcon(getClass().getResource("image/hflip.gif")));
        final JMenuItem vflip_item = new JMenuItem("Vertical flip", new ImageIcon(getClass().getResource("image/vflip.gif")));
        
        final JMenuItem Close_item = new JMenuItem("Close");

        slideshow_item = new JMenuItem("Run slide show", new ImageIcon(getClass().getResource("/image/play.gif")));
        stop_slideshow_item = new JMenuItem("Stop slide show", new ImageIcon(getClass().getResource("/image/stop.gif")));
        stop_slideshow_item.setEnabled(false);

        final JMenuItem exit_item = new JMenuItem("Quit JCDSee");
        final JCheckBoxMenuItem Fullscreen_item = new JCheckBoxMenuItem("Full Screen", true);

        NextImage_item.addActionListener(
        // open the next image on file list
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    OpenNextImage(dummy.GetNextImage(), true);
                }
            }
        );

        Close_item.addActionListener(
        // put current image into frame view
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    dummy.show();
                    dispose();
                    // when close fullscreen window, select the file that currently display.
                    dummy.SelectCurrentFile();
                }
            }
        );

        PreviousImage_item.addActionListener(
        // open the previous image on list
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    OpenNextImage(dummy.GetPreviousImage(), false);
                }
            }
        );

        ZoomIn_item.addActionListener(
            new ActionListener() {
              public void actionPerformed( ActionEvent event ) {
                if (!pane.Zoom(true))
                  ZoomIn_item.setEnabled(false);
                else
                  ZoomOut_item.setEnabled(true);
              }
            }
        );

        ZoomOut_item.addActionListener(
            new ActionListener() {
              public void actionPerformed( ActionEvent event ) {
                if (!pane.Zoom(false))
                  ZoomOut_item.setEnabled(false);
                else
                  ZoomIn_item.setEnabled(true);
              }
            }
        );

        exit_item.addActionListener(
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    dummy.Quit();
                }
            }
        );

        slideshow_item.addActionListener(
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    Run_Slide_Show();
                }
            }
        );

        stop_slideshow_item.addActionListener(
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    sthread.stop();
                    slideshow_item.setEnabled(true);
                    stop_slideshow_item.setEnabled(false);
                }
            }
        );

        Fullscreen_item.addActionListener(
            new ActionListener() {
                public void actionPerformed( ActionEvent event ) {
                    if ( !Fullscreen_item.getState() )
                    {
                        dummy.ViewFullScreen(false);
                        dummy.vw = new ViewerWindow(pane, dummy);
                        dummy.vw.show();
                        dummy.hide();
                        dispose();
                    }
                }
            }
        );

        Rotate_item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                pane.RotateImage();
            }
        });
        
        hflip_item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                pane.FlipImage(false);
            }
        });
        
        vflip_item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                pane.FlipImage(true);
            }
        });
        
        menu.add(NextImage_item);
        menu.add(PreviousImage_item);
        menu.add(ZoomIn_item);
        menu.add(ZoomOut_item);
        menu.add(Fullscreen_item);
        menu.add(slideshow_item);
        menu.add(stop_slideshow_item);
        
        menu.add(Rotate_item);
        menu.add(hflip_item);
        menu.add(vflip_item);
        
        menu.add(Close_item);
        menu.add(exit_item);
        getContentPane().add(menu);

// add mouse listener for window
        addMouseMotionListener(
            new MouseMotionAdapter() {
                public void mouseDragged(MouseEvent e) {
                    label_mouseDragged(e);
                }
            }
        );
        
        pane.addMouseListener(
            new MouseListener() {
                public void mouseClicked( MouseEvent event ) {
                    if (event.getClickCount() == 2) {
                        dummy.show();
                        dispose();
                    }                    
                }
                public void mousePressed( MouseEvent event ) {
                    PopupTriggered(event);
                }
                public void mouseReleased( MouseEvent event ) {
                    PopupTriggered(event);
                }
                public void mouseEntered( MouseEvent event ) {}
                public void mouseExited( MouseEvent event ) {}
            }
        );
// end the add listener section
        /* Center the window */
        Rectangle winDim = getBounds();
        setLocation((screenDim.width - winDim.width) / 2,
		                (screenDim.height - winDim.height) / 2);
        getContentPane().add(pane);
        pane.reshape(0,0,screenDim.width, screenDim.height);
        show(true);
    }

    public boolean OpenNextImage( String imageFileName, boolean down ) {
      if (imageFileName != null) {
        splashIm = dummy.Load_Image(imageFileName);

        while (splashIm.getIconWidth() < 0) { // this is not an image
            if (down) {
                if (dummy.GetNextImage() == null) {
                    dispose();
                    break;
                }
                else
                    splashIm = dummy.Load_Image(dummy.GetNextImage());
            }
            else
                splashIm = dummy.Load_Image(dummy.GetPreviousImage());
        }

        screenDim = Toolkit.getDefaultToolkit().getScreenSize();

        setSize((int)screenDim.getWidth(),(int)screenDim.getHeight());
//        setForeground(Color.black);
        label = new JLabel( splashIm );
        pane.loadNewImage(splashIm); 

        if (splashIm.getIconWidth() > screenDim.getWidth() || splashIm.getIconHeight() > screenDim.getHeight())
        { // mean the image is larger than screen size
            setCursor(handCursor);
            pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        }
        else {
            setCursor(defaultCursor);
        }

        viewport = new JViewport();
        viewport.setView(label);

        pane.setViewport(viewport);
        getContentPane().validate();
        return true;
      } else {
        dispose();
        dummy.show();
        return false;
      }
    }

    public void Run_Slide_Show() {
        sthread = new SlideShow(dummy.slideShowDelayTime*1000, dummy.slideShowForward);
        sthread.start();
        stop_slideshow_item.setEnabled(true);
        slideshow_item.setEnabled(false);
    }

    void label_mouseDragged(MouseEvent e) {
        int mouseY = e.getY();
        int mouseX = e.getX();

        if (mouseY > lastMouseY) {
          vbar.setValue(vbar.getValue() - vbar.getBlockIncrement());
          if (mouseX > lastMouseX)
            hbar.setValue(hbar.getValue() - hbar.getBlockIncrement());
          else if (mouseX < lastMouseX)
            hbar.setValue(hbar.getValue() + hbar.getBlockIncrement());
        }
        else if (mouseY < lastMouseY) {
          vbar.setValue(vbar.getValue() + vbar.getBlockIncrement());
          if (mouseX > lastMouseX)
            hbar.setValue(hbar.getValue() - hbar.getBlockIncrement());
          else if (mouseX < lastMouseX)
            hbar.setValue(hbar.getValue() + hbar.getBlockIncrement());
        }

        lastMouseY = mouseY;
        lastMouseX = mouseX;
    }

    void PopupTriggered(MouseEvent e) {
        lastMouseY = e.getY();
        lastMouseX = e.getX();
        if ( e.isPopupTrigger() )
        {
          int x = e.getX();
          int y = e.getY();
          // if click point is too closed to the edge of screen
          if (x >= (int)d.getWidth() - 117)
              x = (int)d.getWidth() - 117;
          if (y >= (int)d.getHeight() - 92)
              y = (int)d.getHeight() - 92;
          menu.show(pane, x, y);
        }
    }

    class Listen extends KeyAdapter{
        public void keyPressed(KeyEvent e){
            if ( e.getKeyCode()==KeyEvent.VK_UP ){
                vbar.setValue(vbar.getValue() - vbar.getBlockIncrement());
            }
            else if ( e.getKeyCode()==KeyEvent.VK_DOWN ){
                vbar.setValue(vbar.getValue() + vbar.getBlockIncrement());
            }
            else if ( e.getKeyCode()==KeyEvent.VK_LEFT ){
                hbar.setValue(hbar.getValue() - hbar.getBlockIncrement());
            }
            else if ( e.getKeyCode()==KeyEvent.VK_RIGHT ){
                hbar.setValue(hbar.getValue() + hbar.getBlockIncrement());
            }
            else if ( e.getKeyCode() == KeyEvent.VK_ESCAPE )
            {
                dummy.show();
                dispose();
            }
            else if ( e.getKeyCode() == KeyEvent.VK_PAGE_DOWN )
            {
                OpenNextImage(dummy.GetNextImage(), true);
            }
            else if ( e.getKeyCode() == KeyEvent.VK_PAGE_UP )
            {
                OpenNextImage(dummy.GetPreviousImage(), false);
            }
        }
    }
}

⌨️ 快捷键说明

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