MOchamad Kolbi Nuron_5025231183_Tugas PBO 14

 Nama: Mochamad Kolbi Nuron

NRP: 5025231183

Kelas: PBO A Tugas 14

Implementasi GUI

Main.java

import javax.swing.*;


public class Main {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {

            LoginFrame login = new LoginFrame();

            login.setVisible(true);

        });

    }

}

ImageViewer.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;

public class ImageViewer {
    private JFrame frame;
    private ImagePanel imagePanel;
    private JLabel filenameLabel;
    private JLabel statusLabel;
    private OFImage currentImage;
    private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));

    public ImageViewer() {
        makeFrame();
    }

    private void makeFrame() {
        frame = new JFrame("Image Viewer");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new BorderLayout(6, 6));

        filenameLabel = new JLabel("No file displayed.");
        contentPane.add(filenameLabel, BorderLayout.NORTH);

        imagePanel = new ImagePanel();
        contentPane.add(imagePanel, BorderLayout.CENTER);

        statusLabel = new JLabel("Ready");
        contentPane.add(statusLabel, BorderLayout.SOUTH);

        makeMenuBar(frame);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private void makeMenuBar(JFrame frame) {
        JMenuBar menuBar = new JMenuBar();

        JMenu fileMenu = new JMenu("File");
        JMenuItem openItem = new JMenuItem("Open");
        openItem.addActionListener(e -> openFile());
        fileMenu.add(openItem);

        JMenuItem closeItem = new JMenuItem("Close");
        closeItem.addActionListener(e -> closeFile());
        fileMenu.add(closeItem);

        JMenuItem quitItem = new JMenuItem("Quit");
        quitItem.addActionListener(e -> System.exit(0));
        fileMenu.add(quitItem);

        JMenu filterMenu = new JMenu("Filter");
        JMenuItem darkerItem = new JMenuItem("Darker");
        darkerItem.addActionListener(e -> applyDarker());
        filterMenu.add(darkerItem);

        JMenuItem lighterItem = new JMenuItem("Lighter");
        lighterItem.addActionListener(e -> applyLighter());
        filterMenu.add(lighterItem);

        menuBar.add(fileMenu);
        menuBar.add(filterMenu);
        frame.setJMenuBar(menuBar);
    }

    private void openFile() {
        int returnVal = fileChooser.showOpenDialog(frame);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            currentImage = ImageFileManager.loadImage(file);
            if (currentImage != null) {
                imagePanel.setImage(currentImage);
                filenameLabel.setText("File: " + file.getName());
            }
        }
    }

    private void closeFile() {
        currentImage = null;
        imagePanel.clearImage();
        filenameLabel.setText("No file displayed.");
    }

    private void applyDarker() {
        if (currentImage != null) {
            currentImage.darker();
            frame.repaint();
        }
    }

    private void applyLighter() {
        if (currentImage != null) {
            currentImage.lighter();
            frame.repaint();
        }
    }
}

ImagePanel.java
import java.awt.*;
import javax.swing.*;

public class ImagePanel extends JComponent {
    private OFImage panelImage;

    public void setImage(OFImage image) {
        panelImage = image;
        repaint();
    }

    public void clearImage() {
        panelImage = null;
        repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (panelImage != null) {
            g.drawImage(panelImage, 0, 0, getWidth(), getHeight(), null);
        }
    }
}
ImageFileManager.java
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageFileManager {
    public static OFImage loadImage(File file) {
        try {
            BufferedImage image = ImageIO.read(file);
            return new OFImage(image);
        } catch (Exception e) {
            return null;
        }
    }
}

OFImage.java
import java.awt.*;
import java.awt.image.BufferedImage;

public class OFImage extends BufferedImage {
    public OFImage(BufferedImage image) {
        super(image.getColorModel(), image.copyData(null), image.isAlphaPremultiplied(), null);
    }

    public void darker() {
        for (int y = 0; y < getHeight(); y++) {
            for (int x = 0; x < getWidth(); x++) {
                int rgb = getRGB(x, y);
                Color color = new Color(rgb);
                color = color.darker();
                setRGB(x, y, color.getRGB());
            }
        }
    }

    public void lighter() {
        for (int y = 0; y < getHeight(); y++) {
            for (int x = 0; x < getWidth(); x++) {
                int rgb = getRGB(x, y);
                Color color = new Color(rgb);
                color = color.brighter();
                setRGB(x, y, color.getRGB());
            }
        }
    }
}

LoginFrame.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class LoginFrame extends JFrame {
    private JTextField usernameField;
    private JPasswordField passwordField;

    public LoginFrame() {
        setTitle("Login");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 200);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());

        // Panel untuk input
        JPanel inputPanel = new JPanel(new GridLayout(2, 2, 5, 5));
        inputPanel.add(new JLabel("Username:"));
        usernameField = new JTextField();
        inputPanel.add(usernameField);
        inputPanel.add(new JLabel("Password:"));
        passwordField = new JPasswordField();
        inputPanel.add(passwordField);
        add(inputPanel, BorderLayout.CENTER);

        // Tombol login
        JButton loginButton = new JButton("Login");
        loginButton.addActionListener(e -> checkLogin());
        add(loginButton, BorderLayout.SOUTH);
    }

    private void checkLogin() {
        String username = usernameField.getText();
        String password = new String(passwordField.getPassword());

        // Validasi login
        if (username.equals("admin") && password.equals("password")) {
            JOptionPane.showMessageDialog(this, "Login berhasil!");
            dispose(); // Tutup jendela login
            new ImageViewer(); // Lanjutkan ke program utama
        } else {
            JOptionPane.showMessageDialog(this, "Username atau password salah!", "Login Gagal", JOptionPane.ERROR_MESSAGE);
        }
    }
}

hasil:






Komentar

Postingan populer dari blog ini

Mochamad Kolbi Nuron_5025231183_ETS PBO A

tugas PBOA pengertian dan konsep OOP

Mochamad Kolbi Nuron_5025231183_Tugas PBO 8