Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.io.File;
- /**
- * ImageViewer adalah main class dari aplikasi image viewer. ini membangun dan
- * menampilkan aplikasi GUI dan inisialisasi semua komponen lainnya.
- *
- * untuk memulai aplikasi ini, buat sebuah objek dari class ini
- */
- public class ImageViewer {
- // static fields:
- private static final String VERSION = "Version 1.0";
- private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
- // fields:
- private JFrame frame;
- private JLabel filenameLabel;
- private ImagePanel imagePanel;
- private JLabel statusLabel;
- private OFImage currentImage;
- /**
- * membuat ImageViewer yang ditampilkan dilayar
- */
- public ImageViewer(){
- currentImage = null;
- makeFrame();
- }
- // ------- implementasi fungsi menu --------
- /**
- * fungsi Open : membuka file chooser untuk memilih file gambar baru
- */
- private void openFile()
- {
- int returnVal = fileChooser.showOpenDialog(frame);
- if(returnVal != JFileChooser.APPROVE_OPTION){
- return; // dibatalkan
- }
- File selectedFile = fileChooser.getSelectedFile();
- currentImage = ImageFileManager.loadImage(selectedFile);
- if(currentImage == null) // jika filenya invalid
- {
- JOptionPane.showMessageDialog(frame,
- "File gambar ini tidak dikenal",
- "Image Load Error",
- JOptionPane.ERROR_MESSAGE);
- return;
- }
- imagePanel.setImage(currentImage);
- showFilename(selectedFile.getPath());
- showStatus("File Loaded.");
- frame.pack();
- }
- /**
- * fungsi close : menutup gambar sekarang
- */
- private void close(){
- currentImage = null;
- imagePanel.clearImage();
- showFilename(null);
- }
- /**
- * fungsi Quit : untuk keluar aplikasi
- */
- private void quit(){
- System.exit(0);
- }
- /**
- * fungsi darker : untuk membuat gambar lebih gelap
- */
- private void makeDarker(){
- if(currentImage !=null){
- currentImage.darker();
- frame.repaint();
- showStatus("Applied : Darker");
- }else{
- showStatus("Tidak ada gambar yang dimasukkan");
- }
- }
- /**
- * fungsi Lighter : untuk membuat gambar lebih terang dari masa depanmu
- */
- private void makeLighter(){
- if(currentImage !=null){
- currentImage.lighter();
- frame.repaint();
- showStatus("Applied : Lighter");
- }else{
- showStatus("Tidak ada gambar yang dimasukkan");
- }
- }
- /**
- * fungsi threshold : memakai filter threshold
- */
- private void threshold(){
- if(currentImage !=null){
- currentImage.threshold();
- frame.repaint();
- showStatus("Applied : Threshold");
- }else{
- showStatus("Tidak ada gambar yang dimasukkan");
- }
- }
- /**
- * fungsi About : menunjukan informasi tentang aplikasi ini
- */
- private void showAbout(){
- JOptionPane.showMessageDialog(frame,
- "Image Viewer\n" + VERSION,
- "About Image Viewer",
- JOptionPane.INFORMATION_MESSAGE);
- }
- // ----- Support Methods -----
- /**
- * Menunjukkan nama file pada tabel yang sesuai
- * @param filename nama file yang akan ditampilkan
- */
- private void showFilename(String filename){
- if(filename == null){
- filenameLabel.setText("Tidak ada file yang ditampilkan");
- }
- else {
- filenameLabel.setText("File: " + filename);
- }
- }
- /**
- * menampilkan pesan status pada frame status bar
- * @param text pesan status yang akan ditampilkan
- */
- private void showStatus(String text){
- statusLabel.setText(text);
- }
- /**
- * membuat Swing Frame dan kontennya
- */
- private void makeFrame()
- {
- frame = new JFrame("Image Viewer");
- makeMenuBar(frame);
- Container contentPane = frame.getContentPane();
- //tentukan pengelola tata letak dengan jarak yang bagus
- contentPane.setLayout(new BorderLayout(10,10));
- 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);
- //Sudah selesai di-Build -- Atur komponen dan penampilan
- showFilename(null);
- frame.pack();
- Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation(d.width/2 - frame.getWidth()/2,
- d.height/2 - frame.getHeight()/2);
- frame.setVisible(true);
- }
- private void makeMenuBar(JFrame frame){
- final int SHORTCUT_MASK =
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
- JMenuBar menubar = new JMenuBar();
- frame.setJMenuBar(menubar);
- JMenu menu;
- JMenuItem item;
- // membuat menu File
- menu = new JMenu("File");
- menubar.add(menu);
- item = new JMenuItem("Open");
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));
- item.addActionListener(new ActionListener() {
- @Override
- 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() {
- @Override
- 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() {
- @Override
- public void actionPerformed(ActionEvent e) {
- quit();
- }
- });
- menu.add(item);
- // membuat menu filter
- menu = new JMenu("Filter");
- menubar.add(menu);
- item = new JMenuItem("Darker");
- item.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- makeDarker();
- }
- });
- menu.add(item);
- item = new JMenuItem("Lighter");
- item.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- makeLighter();
- }
- });
- menu.add(item);
- item = new JMenuItem("Threshold");
- item.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- threshold();
- }
- });
- menu.add(item);
- // membuat menu Help
- menu = new JMenu("Help");
- menubar.add(menu);
- item = new JMenuItem("Tentang Image Viewer...");
- item.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- showAbout();
- }
- });
- menu.add(item);
- }
- }
Add Comment
Please, Sign In to add comment