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:
Frame dan Panel:
JFramedigunakan untuk membuat jendela utama.JPaneldigunakan untuk mengatur tata letak komponen (label, text field, dan tombol).
GridLayout:
- Layout diatur dengan grid (3 baris, 2 kolom) agar semua komponen tersusun rapi.
Komponen Input:
JTextFielduntuk input username.JPasswordFielduntuk input password (disamarkan dengan bintang*).
Tombol Login:
- Mengecek apakah username dan password sesuai dengan yang telah ditentukan.
- Menampilkan dialog menggunakan
JOptionPane.
Tombol Cancel:
- Mengosongkan field username dan password, lalu memfokuskan kursor kembali ke username.
Event Handling:
ActionListenerdigunakan 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:
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.
Filter File:
javax.swing.filechooser.FileNameExtensionFilterdigunakan untuk memfilter file hanya dengan ekstensi gambar (misalnya.jpg,.png,.gif,.bmp).
Memuat Gambar:
- Gambar dimuat menggunakan
ImageIcon, yang mendukung berbagai format gambar. - Gambar ditampilkan dalam
JLabel.
- Gambar dimuat menggunakan
Scroll Pane:
- Jika gambar lebih besar dari ukuran jendela,
JScrollPanememungkinkan pengguna untuk menggulir.
- Jika gambar lebih besar dari ukuran jendela,
Tata Letak:
BorderLayout: Membagi frame menjadi area untuk menampilkan gambar (tengah) dan tombol (bawah).
Error Handling:
- Menampilkan pesan kesalahan jika ada masalah saat memuat gambar.
Hasil :




Comments
Post a Comment