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

📄 applicationwindow.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.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.util.ResourceBundle;

/**
 * @author Ikryanov Vladimir
 */
public class ApplicationWindow extends JFrame {

    private ResourceBundle resource = ApplicationSettings.getResourceBundle();

    private Actions.ObjectCaptureAction objectCaptureAction = new Actions.ObjectCaptureAction(TrayPopupMenu.class, Actions.ActionType.MENU);
    private Actions.RegionCaptureAction regionCaptureAction = new Actions.RegionCaptureAction(TrayPopupMenu.class, Actions.ActionType.MENU);
    private Actions.DesktopCaptureAction desktopCaptureAction = new Actions.DesktopCaptureAction(TrayPopupMenu.class, Actions.ActionType.MENU);
    private Actions.ActiveWindowCaptureAction windowCaptureAction = new Actions.ActiveWindowCaptureAction(TrayPopupMenu.class, Actions.ActionType.MENU);
    private Actions.SettingsAction settingsAction = new Actions.SettingsAction(TrayPopupMenu.class);
    private Actions.OpenImageAction openImageAction = new Actions.OpenImageAction(TrayPopupMenu.class);
    private Actions.ExitAction exitAction;

    public ApplicationWindow(JxCaptureDemo application) {
        setTitle(resource.getString("TrayIcon.ToolTip.Text"));
        createGUI(application);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                if (exitAction != null) {
                    exitAction.actionPerformed(null);
                }
            }
        });
    }

    private void createGUI(JxCaptureDemo application) {
        createMenuBar(application);
        createToolBar();
        pack();
        setLocationRelativeTo(null);
        setResizable(false);
    }

    private void createMenuBar(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(openImageAction);
        JMenuItem settingsItem = new JMenuItem(settingsAction);
        JMenuItem aboutItem = new JMenuItem(new Actions.AboutAction(TrayPopupMenu.class));
        exitAction = new Actions.ExitAction(TrayPopupMenu.class, application);
        JMenuItem exitItem = new JMenuItem(exitAction);
        JMenuItem toViewerItem = new JRadioButtonMenuItem(new Actions.CaptureToViewerAction(TrayPopupMenu.class));
        JMenuItem toClipboardItem = new JRadioButtonMenuItem(new Actions.CaptureToClipboardAction(TrayPopupMenu.class));
        JMenuItem toFileItem = new JRadioButtonMenuItem(new Actions.CaptureToFileAction(TrayPopupMenu.class));

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

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

        JMenu fileMenu = new JMenu("File");
        fileMenu.add(openImageItem);
        fileMenu.addSeparator();
        fileMenu.add(exitItem);

        JMenu captureMenu = new JMenu("Capture");
        captureMenu.add(desktopItem);
        captureMenu.add(activeWindowItem);
        captureMenu.add(objectItem);
        captureMenu.add(regionItem);
        captureMenu.addSeparator();
        captureMenu.add(toViewerItem);
        captureMenu.add(toClipboardItem);
        captureMenu.add(toFileItem);

        JMenu settingsMenu = new JMenu("Settings");
        settingsMenu.add(settingsItem);

        JMenu helpMenu = new JMenu("Help");
        helpMenu.add(aboutItem);

        JMenuBar menuBar = new JMenuBar();
        menuBar.add(fileMenu);
        menuBar.add(captureMenu);
        menuBar.add(settingsMenu);
        menuBar.add(helpMenu);

        setJMenuBar(menuBar);
    }

    private void createToolBar() {
        JButton objectButton = new ToolButton(objectCaptureAction);
        JButton regionButton = new ToolButton(regionCaptureAction);
        JButton desktopButton = new ToolButton(desktopCaptureAction);
        JButton windowButton = new ToolButton(windowCaptureAction);
        JButton openImageButton = new ToolButton(openImageAction);
        JButton settingsButton = new ToolButton(settingsAction);

        JToolBar toolBar = new JToolBar(JToolBar.HORIZONTAL);
        toolBar.setBorderPainted(false);
        toolBar.setFloatable(false);
        toolBar.add(desktopButton);
        toolBar.add(windowButton);
        toolBar.add(regionButton);
        toolBar.add(objectButton);
        toolBar.addSeparator(new Dimension(10, 0));
        toolBar.add(openImageButton);
        toolBar.add(settingsButton);

        getContentPane().add(toolBar, BorderLayout.NORTH);
    }

    private class ToolButton extends JButton implements MouseListener {
        public ToolButton(AbstractAction action) {
            super(action);
            setText(null);
            setToolTipText(action.getValue(AbstractAction.NAME).toString());
            setMargin(new Insets(7, 7, 7, 7));
            setBorderPainted(false);
            addMouseListener(this);
        }

        protected void paintBorder(Graphics g) {
            super.paintBorder(g);
        }

        public void mouseClicked(MouseEvent e) {
        }

        public void mousePressed(MouseEvent e) {
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
            setBorderPainted(true);
        }

        public void mouseExited(MouseEvent e) {
            setBorderPainted(false);
        }
    }
}

⌨️ 快捷键说明

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