?? mainframe.java
字號:
package imageapp;/** * Write a description of class MainFrame here. * * @author (Shi Peng) * @version (0.7 version 07/07/07) */ import java.awt.*;import java.awt.event.*;import java.awt.image.*;import javax.swing.*;import java.io.*;import javax.imageio.*;import java.util.*;public class MainFrame extends JFrame { JMenuBar mb; JMenu fileMenu; JMenuItem newItem; JMenuItem openItem; JMenuItem saveItem; JMenuItem closeItem; JMenuItem exitItem; JMenu editMenu; JMenuItem undoItem; JMenuItem redoItem; JMenu geoMenu; JMenuItem horMirrorItem; JMenuItem verMirrorItem; JMenuItem scaleItem; JMenuItem rotateItem; JMenu colorMenu; JMenuItem grayScaleItem; JMenuItem changeYHSItem; JMenuItem histgramItem; JMenuItem contrastItem; JMenuItem histPlaneItem; JMenu convolveMenu; JMenuItem laplacianItem; JMenuItem sharpItem; JMenuItem blurItem; JMenuItem filtItem; JMenu frequentMenu; JMenuItem fftItem; JMenuItem decomposeItem; JMenuItem markItem; JToolBar tb; JButton newBtn; JButton openBtn; JButton saveBtn; ImagePanel imagePanel; JScrollPane scrollPane; ImageIcon imageIcon; BufferedImage image; JFileChooser chooser; ImagePreviewer imagePreviewer; ImageFileView fileView; ImageFileFilter bmpFilter; ImageFileFilter jpgFilter; ImageFileFilter gifFilter; ImageFileFilter bothFilter; LinkedList undoList; LinkedList redoList; private final static int MAX_UNDO_COUNT = 10; private final static int MAX_REDO_COUNT = 10; public MainFrame() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { exit(e); } }); undoList = new LinkedList(); redoList = new LinkedList(); //imageIcon = new ImageIcon("c:/01.jpg"); //try { image = ImageIO.read(new File("c:/01.jpg")); } //catch(Exception e) {}; //image = GeoTransform.horMirrorImage(image); //image = reverse(image); initComponents(); } private void initComponents() { Container contentPane = getContentPane(); imagePanel = new ImagePanel(image); scrollPane = new JScrollPane(imagePanel); contentPane.add(scrollPane, BorderLayout.CENTER); chooser = new JFileChooser(); imagePreviewer = new ImagePreviewer(chooser); fileView = new ImageFileView(); bmpFilter = new ImageFileFilter("bmp", "BMP Image Files"); jpgFilter = new ImageFileFilter("jpg", "JPEG Compressed Image Files"); gifFilter = new ImageFileFilter("gif", "GIF Image Files"); bothFilter = new ImageFileFilter(new String[] {"bmp", "jpg", "gif"}, "BMP, JPEG and GIF Image Files"); chooser.addChoosableFileFilter(gifFilter); chooser.addChoosableFileFilter(bmpFilter); chooser.addChoosableFileFilter(jpgFilter); chooser.addChoosableFileFilter(bothFilter); chooser.setAccessory(imagePreviewer); chooser.setFileView(fileView); chooser.setAcceptAllFileFilterUsed(false); Icon fileIcon = new ImageIcon("images/file.gif"); Icon newIcon = new ImageIcon("images/new.gif"); Icon openIcon = new ImageIcon("images/open.gif"); Icon saveIcon = new ImageIcon("images/save.gif"); Icon undoIcon = new ImageIcon("images/undo.gif"); Icon redoIcon = new ImageIcon("images/redo.gif");//************************Menu bar***************************// mb = new JMenuBar(); setJMenuBar(mb);//************************File Menu**************************// fileMenu = new JMenu("File(F)"); fileMenu.setIcon(fileIcon); fileMenu.setMnemonic('F'); mb.add(fileMenu); newItem = new JMenuItem("New(N)", newIcon); newItem.setMnemonic('N'); newItem.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK)); openItem.setMnemonic('O'); openItem.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK)); openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openFile(e); } }); saveItem = new JMenuItem("Save(S)", saveIcon); saveItem.setMnemonic('S'); saveItem.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK)); closeItem = new JMenuItem("Close(C)"); closeItem.setMnemonic('C'); exitItem = new JMenuItem("Exit(X)"); exitItem.setMnemonic('X'); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(closeItem); fileMenu.addSeparator(); fileMenu.add(exitItem);//************************Edit Menu***************************// editMenu = new JMenu("Edit(E)"); editMenu.setMnemonic('E'); mb.add(editMenu); undoItem = new JMenuItem("Undo(U)", undoIcon); undoItem.setMnemonic('U'); undoItem.setAccelerator(KeyStroke.getKeyStroke('Z', Event.CTRL_MASK)); undoItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { undo(e); } }); redoItem = new JMenuItem("Redo(R)", redoIcon); redoItem.setMnemonic('R'); redoItem.setAccelerator(KeyStroke.getKeyStroke('Y', Event.CTRL_MASK)); redoItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { redo(e); } }); editMenu.add(undoItem); editMenu.add(redoItem);//************************Geo Menu***************************// geoMenu = new JMenu("Geometry transform(G)"); geoMenu.setMnemonic('G'); mb.add(geoMenu); horMirrorItem = new JMenuItem("Horizontal mirror(H)"); horMirrorItem.setMnemonic('H'); horMirrorItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { horMirror(e); } }); verMirrorItem = new JMenuItem("Vertical mirror(V)"); verMirrorItem.setMnemonic('V'); verMirrorItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { verMirror(e); } }); scaleItem = new JMenuItem("Scaling(S)"); scaleItem.setMnemonic('S'); scaleItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scale(e); } }); rotateItem = new JMenuItem("Rotate(R)"); rotateItem.setMnemonic('R'); rotateItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rotate(e); } }); geoMenu.add(horMirrorItem); geoMenu.add(verMirrorItem); geoMenu.add(scaleItem); geoMenu.add(rotateItem);//************************Color Menu***************************// colorMenu = new JMenu("Color change(C)"); colorMenu.setMnemonic('C'); mb.add(colorMenu); grayScaleItem = new JMenuItem("Gray(G)"); grayScaleItem.setMnemonic('S'); grayScaleItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { grayScale(e); } }); changeYHSItem = new JMenuItem("Color adjust(M)"); changeYHSItem.setMnemonic('M'); changeYHSItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeYHS(e); } }); histgramItem = new JMenuItem("Gray level table(H)"); histgramItem.setMnemonic('H'); histgramItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { histgram(e); } }); contrastItem = new JMenuItem("Contrast(C)"); contrastItem.setMnemonic('C'); contrastItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { contrast(e); } }); histPlaneItem = new JMenuItem("Gray proportion(P)"); histPlaneItem.setMnemonic('P'); histPlaneItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { histPlane(e); } }); colorMenu.add(grayScaleItem); colorMenu.add(changeYHSItem); colorMenu.add(histgramItem); colorMenu.add(contrastItem); colorMenu.add(histPlaneItem);//************************Convolve Menu***************************// convolveMenu = new JMenu("Edge detect(O)"); convolveMenu.setMnemonic('O'); mb.add(convolveMenu); laplacianItem = new JMenuItem("拉普拉斯邊緣提取(L)");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -