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

📄 traypopupmenu.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 javax.swing.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

/**
 * @author Ikryanov Vladimir
 */
public class TrayPopupMenu extends JPopupMenu {

    private static final String PROPERTY_NAME = "captureOperationEnabled";

    private static CaptureOperations operations = CaptureOperations.getInstance();

    private Actions.ObjectCaptureAction objectCaptureAction = new Actions.ObjectCaptureAction(TrayPopupMenu.class);
    private Actions.RegionCaptureAction regionCaptureAction = new Actions.RegionCaptureAction(TrayPopupMenu.class);
    private Actions.DesktopCaptureAction desktopCaptureAction = new Actions.DesktopCaptureAction(TrayPopupMenu.class);
    private Actions.ActiveWindowCaptureAction windowCaptureAction = new Actions.ActiveWindowCaptureAction(TrayPopupMenu.class);

    private boolean captureOperationEnabled = true;

    public TrayPopupMenu(JxCaptureDemo application) {
        configCaptureOperations();
        createGUI(application);

        addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals(PROPERTY_NAME)) {
                    boolean enabled = ((Boolean) evt.getNewValue()).booleanValue();
                    windowCaptureAction.setEnabled(enabled);
                    objectCaptureAction.setEnabled(enabled);
                    regionCaptureAction.setEnabled(enabled);
                    desktopCaptureAction.setEnabled(enabled);
                }
            }
        });
    }

    private void createGUI(JxCaptureDemo application) {
        JMenuItem activeWindowItem = new JMenuItem(windowCaptureAction);
        JMenuItem objectItem = new JMenuItem(objectCaptureAction);
        JMenuItem regionItem = new JMenuItem(regionCaptureAction);
        JMenuItem desktopItem = new JMenuItem(desktopCaptureAction);
        JMenuItem openImageItem = new JMenuItem(new Actions.OpenImageAction(TrayPopupMenu.class));
        JMenuItem settingsItem = new JMenuItem(new Actions.SettingsAction(TrayPopupMenu.class));
        JMenuItem aboutItem = new JMenuItem(new Actions.AboutAction(TrayPopupMenu.class));
        JMenuItem exitItem = new JMenuItem(new Actions.ExitAction(TrayPopupMenu.class, application));
        JRadioButtonMenuItem toViewerItem = new JRadioButtonMenuItem(new Actions.CaptureToViewerAction(TrayPopupMenu.class));
        JMenuItem toFileItem = new JRadioButtonMenuItem(new Actions.CaptureToFileAction(TrayPopupMenu.class));
        JMenuItem toClipboardItem = new JRadioButtonMenuItem(new Actions.CaptureToClipboardAction(TrayPopupMenu.class));

        ApplicationSettings settings = ApplicationSettings.getInstance();
        toViewerItem.setSelected(settings.isCaptureToViewer());
        toFileItem.setSelected(settings.isCaptureToFile());
        toClipboardItem.setSelected(settings.isCaptureToClipboard());

        JMenu captureToItem = new JMenu("Capture To");
        captureToItem.setIcon(new ImageIcon(ImageViewer.class.getResource("resources/images/empty.png")));
        captureToItem.add(toViewerItem);
        captureToItem.add(toClipboardItem);
        captureToItem.add(toFileItem);

        ButtonGroup group = new ButtonGroup();
        group.add(toViewerItem);
        group.add(toFileItem);
        group.add(toClipboardItem);

        add(desktopItem);
        add(activeWindowItem);
        add(regionItem);
        add(objectItem);
        add(openImageItem);
        addSeparator();
        add(captureToItem);
        addSeparator();
        add(settingsItem);
        add(aboutItem);
        addSeparator();
        add(exitItem);
    }

    private void configCaptureOperations() {
        operations.addCaptureOperationsListener(new CaptureOperations.CaptureOperationsListener() {
            public void operationBegin() {
                setCaptureOperationEnabled(false);
            }

            public void operationComplete(boolean isCanceled) {
                setCaptureOperationEnabled(true);
            }
        });
    }

    public void setCaptureOperationEnabled(boolean captureOperationEnabled) {
        boolean oldValue = this.captureOperationEnabled;
        this.captureOperationEnabled = captureOperationEnabled;
        firePropertyChange(PROPERTY_NAME, oldValue, this.captureOperationEnabled);
    }
}

⌨️ 快捷键说明

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