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

📄 actions.java

📁 Java版本的屏幕截图 工具,可以自己放到系统托盘使用
💻 JAVA
字号:
/*
 * Copyright (c) 2002-2008 TeamDev Ltd. All rights reserved.
 *
 * Use is subject to license terms.
 *
 * The complete licence text can be found at
 * http://www.teamdev.com/winpack/license.jsf
 */
package teamdev.jxcapture.samples.demo;

import teamdev.jxdesktop.PlatformContext;
import teamdev.jxdesktop.macosx.accessibility.AXUIElement;

import javax.swing.*;
import java.util.ResourceBundle;
import java.awt.event.ActionEvent;
import java.io.File;

/**
 * @author Ikryanov Vladimir
 */
public class Actions {

    private static ResourceBundle resource = ApplicationSettings.getResourceBundle();

    private static boolean checkAccessiblityAPI() {
        if (PlatformContext.isMacOS() && !AXUIElement.getInstance().isAPIEnabled()) {
            JOptionPane.showMessageDialog(null,
                    "<html><p>JxCapture Demo will not work if the accessibility API is not enabled.</p>" +
                    "<p>You can enable the accessibility API by checking \"Enable access for assistive devices\" in Universal Access Preferences.</p>",
                    "Accessibility API is not enabled",
                    JOptionPane.WARNING_MESSAGE);
            return true;
        }
        return false;
    }

    static class ActiveWindowCaptureAction extends ApplicationAction {
        public ActiveWindowCaptureAction(Class clazz) {
            this(clazz, null);
        }

        public ActiveWindowCaptureAction(Class clazz, ActionType type) {
            super("ActiveWindow", clazz, type);
        }

        public void actionPerformed(ActionEvent event) {
            if (checkAccessiblityAPI()) {
                return;
            }
            CaptureOperations.getInstance().activeWindowCapture();
        }
    }

    static class ObjectCaptureAction extends ApplicationAction {
        public ObjectCaptureAction(Class clazz) {
            this(clazz, null);
        }

        public ObjectCaptureAction(Class clazz, ActionType type) {
            super("Object", clazz, type);
        }

        public void actionPerformed(ActionEvent e) {
            if (checkAccessiblityAPI()) {
                return;
            }
            CaptureOperations.getInstance().objectCapture();
        }
    }

    static class RegionCaptureAction extends ApplicationAction {
        public RegionCaptureAction(Class clazz) {
            this(clazz, null);
        }

        public RegionCaptureAction(Class clazz, ActionType type) {
            super("Region", clazz, type);
        }

        public void actionPerformed(ActionEvent e) {
            if (checkAccessiblityAPI()) {
                return;
            }
            CaptureOperations.getInstance().regionCapture();
        }
    }

    static class DesktopCaptureAction extends ApplicationAction {
        public DesktopCaptureAction(Class clazz) {
            this(clazz, null);
        }

        public DesktopCaptureAction(Class clazz, ActionType type) {
            super("Screen", clazz, type);
        }

        public void actionPerformed(ActionEvent e) {
            if (checkAccessiblityAPI()) {
                return;
            }
            CaptureOperations.getInstance().desktopCapture();
        }
    }

    static class ExitAction extends ApplicationAction {

        private JxCaptureDemo application;

        public ExitAction(Class clazz, JxCaptureDemo application) {
            super("Exit", clazz, null);
            this.application = application;
        }

        public void actionPerformed(ActionEvent e) {
            application.close();
        }
    }

    static class SettingsAction extends ApplicationAction {
        public SettingsAction(Class clazz) {
            super("Settings", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    SettingsDialog settingsDialog = SettingsDialog.getInstance();
                    settingsDialog.setModal(true);
                    settingsDialog.setVisible(true);
                    settingsDialog.toFront();
                }
            });
        }
    }

    static class OpenImageAction extends ApplicationAction {
        public OpenImageAction(Class clazz) {
            super("OpenImage", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            ImageFileChooser fileChooser = new ImageFileChooser();
            File imageFile = fileChooser.openImageFile();
            if (imageFile != null) {
                ImageViewer imageViewer = new ImageViewer();
                if (imageViewer.setImage(imageFile)) {
                    imageViewer.setVisible(true);
                    imageViewer.toFront();
                }
            }
        }
    }

    static class AboutAction extends ApplicationAction {
        public AboutAction(Class clazz) {
            super("About", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    AboutDialog aboutDialog = AboutDialog.getInstance();
                    aboutDialog.setModal(true);
                    aboutDialog.setVisible(true);
                    aboutDialog.toFront();
                }
            });
        }
    }


    static class CaptureToViewerAction extends ApplicationAction {
        public CaptureToViewerAction(Class clazz) {
            super("ToViewer", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            ApplicationSettings.getInstance().setCaptureToViewer();
        }
    }

    static class CaptureToFileAction extends ApplicationAction {
        public CaptureToFileAction(Class clazz) {
            super("ToFile", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            ApplicationSettings.getInstance().setCaptureToFile();
        }
    }

    static class CaptureToClipboardAction extends ApplicationAction {
        public CaptureToClipboardAction(Class clazz) {
            super("ToClipboard", clazz);
        }

        public void actionPerformed(ActionEvent e) {
            ApplicationSettings.getInstance().setCaptureToClipboard();
        }
    }

    static abstract class ApplicationAction extends AbstractAction {
        protected ApplicationAction(String actionName, Class clazz) {
            this(actionName, clazz, null);
        }

        protected ApplicationAction(String actionName, Class clazz, ActionType type) {
            this(actionName, clazz, type, true, true, true);
        }

        protected ApplicationAction(String actionName, Class clazz, ActionType type, boolean hasText, boolean hasIcon, boolean hasAccelerator) {
            if (hasText) {
                String typeValue = type != null ? "." + type.getValue() : "";
                try {
                    putValue(Action.NAME, resource.getString(clazz.getName() + ".Action." + actionName + ".Text" + typeValue));
                } catch (Exception e) {
                    // ignore
                }            }
            if (hasIcon) {
                try {
                    String icon = resource.getString(clazz.getName() + ".Action." + actionName + ".Icon");
                    putValue(Action.SMALL_ICON, new ImageIcon(ImageViewer.class.getResource(icon)));
                } catch (Exception e) {
                    // ignore
                }
            }
            if (hasAccelerator) {
                try {
                    String accelerator = resource.getString(clazz.getName() + ".Action." + actionName + ".Accelerator");
                    putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(accelerator));
                } catch (Exception e) {
                    // ignore
                }
            }
        }
    }

    static class ActionType {
        public static final ActionType MENU = new ActionType("Menu");

        private String type;

        private ActionType(String type) {
            this.type = type;
        }

        public String getValue() {
            return type;
        }
    }
}

⌨️ 快捷键说明

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