package ip.j2d;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame {
private JMenu filterMenu;
private ImagePanel imagePanel;
private BufferedImageProcess invertFilter = new InvertFilter();
private BufferedImageProcess sharpenFilter = new SharpenFilter();
private BufferedImageProcess blurFilter = new BlurFilter();
private BufferedImageProcess colorFilter = new ColorFilter();
private BufferedImageProcess pseudoColor = new PseudoColor();
public Main() {
super("Java 2D Image Processing Demo");
initGui();
}
private void initGui() {
imagePanel = new ImagePanel(
futils.Futil.getReadFile("select an image"));
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
filterMenu = new JMenu("Image Filters");
filterMenu.setMnemonic('I');
JMenuItem originalMenuItem =
new JMenuItem("Display Original");
originalMenuItem.setMnemonic('O');
originalMenuItem.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent action) {
imagePanel.displayOriginalImage();
}
} );
JMenuItem invertMenuItem = createMenuItem(
"Invert", 'I', invertFilter);
JMenuItem sharpenMenuItem = createMenuItem(
"Sharpen", 'S', sharpenFilter);
JMenuItem blurMenuItem = createMenuItem(
"Blur", 'B', blurFilter);
JMenuItem changeColorsMenuItem = createMenuItem(
"Change Colors", 'C', colorFilter);
JMenuItem pseudoColorMenuItem = createMenuItem(
"pseudoColor", 'p', pseudoColor);
filterMenu.add(originalMenuItem);
filterMenu.add(invertMenuItem);
filterMenu.add(sharpenMenuItem);
filterMenu.add(blurMenuItem);
filterMenu.add(changeColorsMenuItem);
filterMenu.add(pseudoColorMenuItem);
menuBar.add(filterMenu);
getContentPane().add(imagePanel, BorderLayout.CENTER);
}
public JMenuItem createMenuItem(String menuItemName,
char mnemonic,
final BufferedImageProcess filter) {
JMenuItem menuItem = new JMenuItem(menuItemName);
menuItem.setMnemonic(mnemonic);
menuItem.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent action) {
imagePanel.applyFilter(filter);
}
} );
return menuItem;
}
public static void main(String args[]) {
Main m = new Main();
m.setDefaultCloseOperation(EXIT_ON_CLOSE);
m.pack();
m.setVisible(true);
}
}