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

📄 imageviewer.java

📁 现在在国外大学里最流行的java学习软件,同时还有大量的example,在名为project的文件里.安装好后用bluej打开peoject的例子,可以进行你想要的任何变化.同时可以了解大量的源码
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import java.awt.image.*;import javax.swing.*;import java.io.File;import java.util.List;import java.util.ArrayList;import java.util.Iterator;/** * ImageViewer is the main class of the image viewer application. It builds and * displays the application GUI and initialises all other components. *  * To start the application, create an object of this class. *  * @author Michael Kolling and David J Barnes  * @version 2.0 */public class ImageViewer{    // static fields:    private static final String VERSION = "Version 2.0";    private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));    // fields:    private JFrame frame;    private ImagePanel imagePanel;    private JLabel filenameLabel;    private JLabel statusLabel;    private OFImage currentImage;        private List<Filter> filters;        /**     * Create an ImageViewer show it on screen.     */    public ImageViewer()    {        currentImage = null;        filters = createFilters();        makeFrame();    }    // ---- implementation of menu functions ----        /**     * Open function: open a file chooser to select a new image file.     */    private void openFile()    {        int returnVal = fileChooser.showOpenDialog(frame);        if(returnVal != JFileChooser.APPROVE_OPTION) {            return;  // cancelled        }        File selectedFile = fileChooser.getSelectedFile();        currentImage = ImageFileManager.loadImage(selectedFile);        if(currentImage == null) {   // image file was not a valid image            JOptionPane.showMessageDialog(frame,                    "The file was not in a recognized image file format.",                    "Image Load Error",                    JOptionPane.ERROR_MESSAGE);            return;        }                imagePanel.setImage(currentImage);        showFilename(selectedFile.getPath());        showStatus("File loaded.");        frame.pack();    }        /**     * Close function: close the current image.     */    private void close()    {        currentImage = null;        imagePanel.clearImage();        showFilename(null);    }        /**     * Quit function: quit the application.     */    private void quit()    {        System.exit(0);    }            /**     * Apply a given filter to the current image.     * @param filter The filter to be applied.     */    private void applyFilter(Filter filter)    {        if(currentImage != null) {            filter.apply(currentImage);            frame.repaint();            showStatus("Applied: " + filter.getName());        }        else {            showStatus("No image loaded.");        }    }        /**     * 'Lighter' function: make the picture lighter     */    private void showAbout()    {        JOptionPane.showMessageDialog(frame,                     "ImageViewer\n" + VERSION,                    "About ImageViewer",                     JOptionPane.INFORMATION_MESSAGE);    }            // ---- support methods ----    /**     * Display a file name on the appropriate label.     * @param filename The file name to be displayed.     */    private void showFilename(String filename)    {        if(filename == null) {            filenameLabel.setText("No file displayed.");        }        else {            filenameLabel.setText("File: " + filename);        }    }        /**     * Display a status message in the frame's status bar.     */    private void showStatus(String text)    {        statusLabel.setText(text);    }        /**     * Create and return a list with all the known filters.     * @return The list of filters.     */    private List<Filter> createFilters()    {        List<Filter> filterList = new ArrayList<Filter>();        filterList.add(new DarkerFilter("Darker"));        filterList.add(new LighterFilter("Lighter"));        filterList.add(new ThresholdFilter("Threshold"));                return filterList;    }        // ---- swing stuff to build the frame and all its components ----        /**     * Create the Swing frame and its content.     */    private void makeFrame()    {        frame = new JFrame("ImageViewer");        Container contentPane = frame.getContentPane();                makeMenuBar(frame);                // Specify the layout manager with nice spacing        contentPane.setLayout(new BorderLayout(6, 6));                filenameLabel = new JLabel();        contentPane.add(filenameLabel, BorderLayout.NORTH);        imagePanel = new ImagePanel();        contentPane.add(imagePanel, BorderLayout.CENTER);        statusLabel = new JLabel(VERSION);        contentPane.add(statusLabel, BorderLayout.SOUTH);                // building is done - arrange the components and show                showFilename(null);        frame.pack();                // center the frame on screen        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();        frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);        frame.setVisible(true);    }        /**     * Create the main frame's menu bar.     * @param frame   The frame that the menu bar should be added to.     */    private void makeMenuBar(JFrame frame)    {        final int SHORTCUT_MASK =            Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();        JMenuBar menubar = new JMenuBar();        frame.setJMenuBar(menubar);                JMenu menu;        JMenuItem item;                // create the File menu        menu = new JMenu("File");        menubar.add(menu);                item = new JMenuItem("Open");            item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));            item.addActionListener(new ActionListener() {                               public void actionPerformed(ActionEvent e) { openFile(); }                           });        menu.add(item);        item = new JMenuItem("Close");            item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));            item.addActionListener(new ActionListener() {                               public void actionPerformed(ActionEvent e) { close(); }                           });        menu.add(item);        menu.addSeparator();                item = new JMenuItem("Quit");            item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));            item.addActionListener(new ActionListener() {                               public void actionPerformed(ActionEvent e) { quit(); }                           });        menu.add(item);        // create the Filter menu        menu = new JMenu("Filter");        menubar.add(menu);                for(final Filter filter : filters) {            item = new JMenuItem(filter.getName());            item.addActionListener(new ActionListener() {                                public void actionPerformed(ActionEvent e) {                                     applyFilter(filter);                                }                           });             menu.add(item);         }        // create the Help menu        menu = new JMenu("Help");        menubar.add(menu);                item = new JMenuItem("About ImageViewer...");            item.addActionListener(new ActionListener() {                               public void actionPerformed(ActionEvent e) { showAbout(); }                           });        menu.add(item);    }}

⌨️ 快捷键说明

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