Senin, 17 November 2025

Pertemuan 14 - Pemrograman GUI

 Nama    : Safa Mashita

 NRP      : 5025241022


 Pertemuan 14 - Pemrograman GUI


1. Membuat frame windows user login dan password

Jawab

Output Program

Tampilan Login



Jika Username & Password benar (Login berhasil)


Jika Username & Password benar (Login gagal)


Penjelasan

a. Class LoginFrame

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

public class LoginFrame extends JFrame {

    private JTextField usernameField;
    private JPasswordField passwordField;
    private JButton loginButton;
    private JLabel messageLabel;

    public LoginFrame() {
        setTitle("User Login");
        setSize(350, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        // Panel utama
        JPanel panel = new JPanel(new GridLayout(4, 2, 5, 5));

        panel.add(new JLabel("Username:"));
        usernameField = new JTextField();
        panel.add(usernameField);

        panel.add(new JLabel("Password:"));
        passwordField = new JPasswordField();
        panel.add(passwordField);

        messageLabel = new JLabel("");
        panel.add(messageLabel);

        loginButton = new JButton("Login");
        panel.add(loginButton);

        add(panel);

        loginButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String user = usernameField.getText();
                String pass = new String(passwordField.getPassword());

                if (user.equals("admin") && pass.equals("123")) {
                    messageLabel.setText("Login Berhasil!");
                } else {
                    messageLabel.setText("Username/Password Salah");
                }
            }
        });
    }

    public static void main(String[] args) {
        new LoginFrame().setVisible(true);
    }
}

Kegunaan:

Sebagai frame utama yang menampilkan form login user menggunakan Swing.

Atribut:

  • usernameField : input teks untuk username
  • passwordField : input password

  • loginButton : tombol untuk verifikasi

  • messageLabel : menampilkan pesan hasil login

Method:

  • LoginFrame() : konstruktor untuk membangun GUI (layout, label, tombol, event listener).
  • main() : menjalankan program dengan menampilkan frame login.

Hubungan:

  • LoginFrame berperan sebagai pintu masuk sebelum ImageViewer muncul.

  • Jika login berhasil, LoginFrame akan:

    • menutup frame login

    • membuat instance dari ImageViewer dan menampilkannya.

  • Jadi LoginFrame mengontrol kapan ImageViewer digunakan, tetapi bukan sebaliknya.


b. Class MainApp

public class MainApp {
    public static void main(String[] args) {
        LoginFrame.main(args);
    }
}

Kegunaan:

Sebagai class utama (entry point) yang memulai seluruh aplikasi. MainApp akan menjalankan proses login terlebih dahulu melalui LoginFrame.

Method:

  • main(String[] args)
    Method ini memanggil LoginFrame.main(args) untuk menampilkan form login. Setelah login berhasil, LoginFrame akan membuka ImageViewer.

Hubungan:

  • MainApp dan LoginFrame
  • MainApp hanya memanggil LoginFrame sebagai langkah awal aplikasi. Jadi MainApp berfungsi sebagai pengendali utama yang menentukan bahwa proses harus dimulai dari login.


2. Implementasikan aplikasi image viewer

Jawab

Output Program

Fit

Zoom In


Zoom Out


Penjelasan


a. Class ImageViewer

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

public class ImageViewer extends JFrame {

    private JLabel imageLabel;
    private JButton openButton;
    private JFileChooser fileChooser;

    public ImageViewer() {
        setTitle("Simple Image Viewer");
        setSize(600, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        imageLabel = new JLabel("", SwingConstants.CENTER);
        openButton = new JButton("Open Image");
        fileChooser = new JFileChooser();

        add(openButton, BorderLayout.NORTH);
        add(imageLabel, BorderLayout.CENTER);

        openButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int result = fileChooser.showOpenDialog(null);

                if (result == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();
                    ImageIcon icon = new ImageIcon(selectedFile.getAbsolutePath());

                    Image img = icon.getImage();
                    Image scaledImg = img.getScaledInstance(550, 450, Image.SCALE_SMOOTH);

                    imageLabel.setIcon(new ImageIcon(scaledImg));
                }
            }
        });
    }

    public static void main(String[] args) {
        new ImageViewer().setVisible(true);
    }
}

Kegunaan:

Menjadi aplikasi sederhana untuk membuka dan menampilkan gambar.

Atribut:

  • imageLabel : area untuk menampilkan gambar

  • openButton : tombol untuk memilih file gambar

  • fileChooser : komponen dialog untuk memilih file

Method:

  • ImageViewer() : membangun GUI dengan layout BorderLayout

  • main() : menjalankan ImageViewer

Hubungan:

  • ImageViewer akan dipanggil oleh LoginFrame setelah login berhasil.
  • ImageViewer tidak memiliki hubungan balik ke LoginFrame (dia tidak perlu tahu siapa yang memanggilnya).


b. Class MainApp

public class MainApp {
    public static void main(String[] args) {
        LoginFrame.main(args);
    }
}

Kegunaan:

Sebagai class utama (entry point) yang memulai seluruh aplikasi. MainApp akan menjalankan proses login terlebih dahulu melalui LoginFrame.

Method:

  • main(String[] args)
    Method ini memanggil LoginFrame.main(args) untuk menampilkan form login. Setelah login berhasil, LoginFrame akan membuka ImageViewer.

Hubungan:

  • MainApp dan ImageViewer (tidak langsung)
    MainApp tidak memanggil ImageViewer secara langsung.
    Sebaliknya:

    • MainApp memanggil LoginFrame

    • LoginFrame yang akan memutuskan apakah membuka ImageViewer setelah login berhasil



 

Tidak ada komentar:

Posting Komentar

Pertemuan 16 - Membuat Aplikasi CRUD Java

 Nama          : Safa Mashita  NRP            : 5025241022 Membuat Aplikasi CRUD Java - Manajemen Buku Perpustakaan Pada pertemuan ini, saya...