implementasi GUI

 

Nama           : Hafidz Panji Ashari
NRP             : 5025231278
Kelas            : PBO-A


1. Membuat frame windows user login dan password .

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

public class Login {
    // Data username dan password yang valid
    private final String USERNAME = "hapid123";
    private final String PASSWORD = "pass";

    // Komponen GUI
    private JTextField txtUsername;
    private JPasswordField txtPassword;

    public static void main(String[] args) {
        Login app = new Login();
        app.go();
    }

    public void go() {
        // Membuat frame
        JFrame frame = new JFrame("Login Panel");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Membuat panel
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2, 10, 10));

        // Komponen GUI
        JLabel lblUsername = new JLabel("Username:");
        JLabel lblPassword = new JLabel("Password:");
        txtUsername = new JTextField(20);
        txtPassword = new JPasswordField(20);
        JButton btnLogin = new JButton("Login");
        JButton btnCancel = new JButton("Cancel");

        btnLogin.addActionListener(new LoginListener());

        btnCancel.addActionListener(new CancelListener());

        panel.add(lblUsername);
        panel.add(txtUsername);
        panel.add(lblPassword);
        panel.add(txtPassword);
        panel.add(btnLogin);
        panel.add(btnCancel);

        // Menambahkan panel ke frame
        frame.getContentPane().add(panel, BorderLayout.CENTER);

        // Mengatur ukuran frame dan menampilkannya
        frame.setSize(300, 150);
        frame.setLocationRelativeTo(null); // Menampilkan frame di tengah layar
        frame.setVisible(true);
    }

    // Inner class untuk menangani tombol Login
    private class LoginListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            String inputUsername = txtUsername.getText();
            String inputPassword = new String(txtPassword.getPassword()); // Mengubah password menjadi String

            if (USERNAME.equals(inputUsername) && PASSWORD.equals(inputPassword)) {
                JOptionPane.showMessageDialog(null, "Login Granted!");
            } else {
                JOptionPane.showMessageDialog(null, "Login Denied!", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }

    private class CancelListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            txtUsername.setText("");
            txtPassword.setText("");
            txtUsername.requestFocus();
        }
    }
}


Penjelasan Kode:

  1. Frame dan Panel:

    • JFrame digunakan untuk membuat jendela utama.
    • JPanel digunakan untuk mengatur tata letak komponen (label, text field, dan tombol).
  2. GridLayout:

    • Layout diatur dengan grid (3 baris, 2 kolom) agar semua komponen tersusun rapi.
  3. Komponen Input:

    • JTextField untuk input username.
    • JPasswordField untuk input password (disamarkan dengan bintang *).
  4. Tombol Login:

    • Mengecek apakah username dan password sesuai dengan yang telah ditentukan.
    • Menampilkan dialog menggunakan JOptionPane.
  5. Tombol Cancel:

    • Mengosongkan field username dan password, lalu memfokuskan kursor kembali ke username.
  6. Event Handling:

    • ActionListener digunakan untuk mendeteksi aksi pada tombol Login dan Cancel.


Hasil 




2. Implementasikan aplikasi image viewer .


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

public class ImageViewer {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new ImageViewer().createAndShowGUI());
    }

    public void createAndShowGUI() {
        JFrame frame = new JFrame("Image Viewer");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());

        JLabel imageLabel = new JLabel();
        imageLabel.setHorizontalAlignment(SwingConstants.CENTER);
        panel.add(new JScrollPane(imageLabel), BorderLayout.CENTER);

        JButton btnLoadImage = new JButton("Load Image");
        panel.add(btnLoadImage, BorderLayout.SOUTH);

        btnLoadImage.addActionListener(e -> {
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setDialogTitle("Select an Image");
            fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            fileChooser.setAcceptAllFileFilterUsed(false);
            fileChooser.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "bmp"));

            int result = fileChooser.showOpenDialog(frame);
            if (result == JFileChooser.APPROVE_OPTION) {
                File selectedFile = fileChooser.getSelectedFile();
                try {
                    ImageIcon image = new ImageIcon(selectedFile.getAbsolutePath());
                    imageLabel.setIcon(image);
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(frame, "Error loading image!", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        frame.getContentPane().add(panel);
        frame.setSize(600, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}


Penjelasan Kode:

  1. Komponen Utama:

    • JFrame: Jendela utama aplikasi.
    • JLabel: Menampilkan gambar yang dipilih.
    • JButton: Tombol untuk membuka gambar.
    • JFileChooser: Dialog pemilih file untuk memilih gambar dari komputer.
  2. Filter File:

    • javax.swing.filechooser.FileNameExtensionFilter digunakan untuk memfilter file hanya dengan ekstensi gambar (misalnya .jpg, .png, .gif, .bmp).
  3. Memuat Gambar:

    • Gambar dimuat menggunakan ImageIcon, yang mendukung berbagai format gambar.
    • Gambar ditampilkan dalam JLabel.
  4. Scroll Pane:

    • Jika gambar lebih besar dari ukuran jendela, JScrollPane memungkinkan pengguna untuk menggulir.
  5. Tata Letak:

    • BorderLayout: Membagi frame menjadi area untuk menampilkan gambar (tengah) dan tombol (bawah).
  6. Error Handling:

    • Menampilkan pesan kesalahan jika ada masalah saat memuat gambar.


Hasil : 
















Comments

Popular posts from this blog

Daily Task Manager

EAS

DisplayClock