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

📄 imagemenu.java

📁 一个用Java 造成的小画家
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package onlyfun.caterpillar.app.EasyJShop.menu;

import onlyfun.caterpillar.app.EasyJShop.main.AbstractChild;
import onlyfun.caterpillar.app.EasyJShop.main.CanvasComponent;
import onlyfun.caterpillar.app.EasyJShop.main.ColorDemoBox;
import onlyfun.caterpillar.app.EasyJShop.main.IBatcher;

import java.awt.AWTException;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.IOException;


import javax.imageio.ImageIO;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;

import onlyfun.caterpillar.image.ScreenCaptureHelper;
import java.awt.Color;
import javax.swing.JPanel;
import javax.swing.JLabel;

public class ImageMenu extends AbstractChild {
    private ScreenCaptureHelper captureHelper;
    
    private JMenu imageMenu;
    
    private JMenuItem captureMenuItem, newImageMenuItem;
    private JMenuItem openMenuItem, saveMenuItem, saveAsMenuItem, saveAllMenuItem;
    private JMenuItem exitMenuItem;
    
    private JSlider delaySlider;
    
    private JSpinner widthSpinner, heightSpinner;
    private ColorDemoBox backgroundColorBox;
    private JPanel newImagePanel;
    
    private JFileChooser openFileChooser, saveFileChooser;
    
    private WindowListener windowListener;
    
    private InternalFrameListener internalFrameListener;
    
    public ImageMenu() {
        initResource();
        setupUIComponent();
        setupEventListener();
    }
    
    private void initResource() {
        
        
        try {
            captureHelper = new ScreenCaptureHelper();
        }
        catch(AWTException e) {
            infoMessageBox(e.getMessage());
        }
    }
    
    private void setupUIComponent() {
        delaySlider = new JSlider(SwingConstants.HORIZONTAL, 0, 20, 0);
        delaySlider.setPaintTrack(true);
        delaySlider.setPaintLabels(true);
        delaySlider.setMajorTickSpacing(5);
        delaySlider.setMajorTickSpacing(1);
        delaySlider.setPaintTicks(true);
        
        openFileChooser = new JFileChooser();
        openFileChooser.setMultiSelectionEnabled(true);
        openFileChooser.addChoosableFileFilter(new OpenableFileFilter());
        
        saveFileChooser = new JFileChooser();
        saveFileChooser.addChoosableFileFilter(new SavableFileFilter());
        
        imageMenu = new JMenu("Image");
        captureMenuItem = new JMenuItem("Get screen");
        newImageMenuItem = new JMenuItem("New");
        openMenuItem = new JMenuItem("Open..");
        saveMenuItem = new JMenuItem("Save");
        saveAsMenuItem = new JMenuItem("Save as..");
        saveAllMenuItem = new JMenuItem("Save all");
        exitMenuItem = new JMenuItem("Exit");
        
        imageMenu.add(captureMenuItem);
        imageMenu.add(newImageMenuItem);
        imageMenu.addSeparator();
        imageMenu.add(openMenuItem);
        imageMenu.add(saveMenuItem);
        imageMenu.add(saveAsMenuItem);
        imageMenu.add(saveAllMenuItem);
        imageMenu.addSeparator();
        imageMenu.add(exitMenuItem);
        
        saveMenuItem.setEnabled(false);
        saveAsMenuItem.setEnabled(false);
        saveAllMenuItem.setEnabled(false);
        
        widthSpinner = new JSpinner();
        widthSpinner.setValue(new Integer(640));
        heightSpinner = new JSpinner();
        heightSpinner.setValue(new Integer(480));
        backgroundColorBox = new ColorDemoBox(Color.white);
        newImagePanel = new JPanel();
        newImagePanel.add(new JLabel("Width"));
        newImagePanel.add(widthSpinner);
        newImagePanel.add(new JLabel("Height"));
        newImagePanel.add(heightSpinner);
        newImagePanel.add(new JLabel(" Background color"));
        newImagePanel.add(backgroundColorBox);
    }
    
    private void setupEventListener() {
        captureMenuItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK));
        newImageMenuItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
        openMenuItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
        saveMenuItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
        exitMenuItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
        
        captureMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        captureScreen();
                    }
                }
            );

        newImageMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        newImageFile();
                    }
                }
            );
        
        openMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {                        
                        openImageFile();
                    }
                }
            );
        
        saveMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        saveImageFile();
                    }
                }
            );
        
        saveAsMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        saveImageFileAs();
                    }
                }
            );
        
        saveAllMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        saveAllImageFile();
                    }
                }
            );
        
        exitMenuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        checkUnsavedImages();
                    }
                }
            );
        
        widthSpinner.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                if(((Integer) widthSpinner.getValue()).intValue() <= 0) {
                    widthSpinner.setValue(new Integer(1));
                }
            }
        });
        
        heightSpinner.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                if(((Integer) heightSpinner.getValue()).intValue() <= 0) {
                    heightSpinner.setValue(new Integer(1));
                }
            }
        });
        
        backgroundColorBox.addMouseListener(new MouseAdapter() {           
            public void mouseClicked(MouseEvent e) {
                Color color = JColorChooser.showDialog(null, "Color information", backgroundColorBox.getColor());
                if(color != null) {
                    backgroundColorBox.setColor(color);
                    backgroundColorBox.repaint();
                }
            }
        });
        
        windowListener = new WindowListener() {
            public void windowClosing(WindowEvent e) {
                checkUnsavedImages();
            }

            public void windowOpened(WindowEvent e) {
            }

            public void windowClosed(WindowEvent e) {
            }

            public void windowIconified(WindowEvent e) {
            }

            public void windowDeiconified(WindowEvent e) {
            }

            public void windowActivated(WindowEvent e) {
            }

            public void windowDeactivated(WindowEvent e) {
            }
        };
        
        internalFrameListener = new InternalFrameListener() {

            public void internalFrameOpened(InternalFrameEvent e) {
                saveMenuItem.setEnabled(true);
                saveAsMenuItem.setEnabled(true);
                saveAllMenuItem.setEnabled(true);
            }

            public void internalFrameClosing(InternalFrameEvent e) {
                JInternalFrame internalFrame = (JInternalFrame) e.getSource();//getDesktopPane().getSelectedFrame();
                
                try {
                    internalFrame.setIcon(false);
                    internalFrame.setSelected(true);
                }
                catch(PropertyVetoException ex) {
                    infoMessageBox(ex.getMessage());
                }
                
                checkUnsavedImage(internalFrame);
            }

            public void internalFrameClosed(InternalFrameEvent e) {
                checkImageMenuItem();
            }

            public void internalFrameIconified(InternalFrameEvent e) {
                checkImageMenuItem();
            }
            public void internalFrameDeiconified(InternalFrameEvent e) {

⌨️ 快捷键说明

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