Tugas Pertemuan 14 - 5025231186
Agym Kamil Ramadhan
5025231186
Implementasi GUI
import javax.swing.*;
import java.awt.*;
public class CombinedApp {
private String username = "kamilganteng";
private String password = "123";
private JLabel imageLabel;
private JFileChooser fileChooser;
public static void main(String[] args) {
SwingUtilities.invokeLater(CombinedApp::new);
}
public CombinedApp() {
// Membuat Frame Utama
JFrame mainFrame = new JFrame("Combined Application");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(400, 200);
// Membuat Panel Utama
JPanel mainPanel = new JPanel();
JButton btnLogin = new JButton("Open Login Panel");
JButton btnImageViewer = new JButton("Open Image Viewer");
mainPanel.add(btnLogin);
mainPanel.add(btnImageViewer);
mainFrame.add(mainPanel);
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible(true);
// Event Listener untuk Login Panel
btnLogin.addActionListener(e -> openLoginPanel());
// Event Listener untuk Image Viewer
btnImageViewer.addActionListener(e -> openImageViewer());
}
// Login Panel
private void openLoginPanel() {
JFrame loginFrame = new JFrame("Login Panel");
loginFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
loginFrame.setSize(400, 200);
JPanel panel = new JPanel(new GridLayout(3, 2, 10, 10));
JLabel lblUsername = new JLabel("Username:");
JLabel lblPassword = new JLabel("Password:");
JTextField txtUsername = new JTextField(20);
JPasswordField txtPassword = new JPasswordField(20);
JButton btnLogin = new JButton("Login");
JButton btnCancel = new JButton("Cancel");
panel.add(lblUsername);
panel.add(txtUsername);
panel.add(lblPassword);
panel.add(txtPassword);
panel.add(btnLogin);
panel.add(btnCancel);
loginFrame.add(panel);
loginFrame.setLocationRelativeTo(null);
loginFrame.setVisible(true);
btnLogin.addActionListener(e -> {
String inputUsername = txtUsername.getText();
String inputPassword = new String(txtPassword.getPassword());
if (inputUsername.equals(username) && inputPassword.equals(password)) {
JOptionPane.showMessageDialog(loginFrame, "Login Successful!");
} else {
JOptionPane.showMessageDialog(loginFrame, "Login Denied!");
}
});
btnCancel.addActionListener(e -> {
txtUsername.setText("");
txtPassword.setText("");
txtUsername.requestFocus();
});
}
// Image Viewer
private void openImageViewer() {
JFrame imageFrame = new JFrame("Image Viewer");
imageFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
imageFrame.setSize(600, 400);
JPanel panel = new JPanel(new BorderLayout());
JPanel buttonPanel = new JPanel();
imageLabel = new JLabel("No Image Selected", SwingConstants.CENTER);
imageLabel.setPreferredSize(new Dimension(400, 300));
imageLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
JButton btnOpen = new JButton("Open Image");
JButton btnClear = new JButton("Clear Image");
buttonPanel.add(btnOpen);
buttonPanel.add(btnClear);
panel.add(imageLabel, BorderLayout.CENTER);
panel.add(buttonPanel, BorderLayout.SOUTH);
imageFrame.add(panel);
imageFrame.setLocationRelativeTo(null);
imageFrame.setVisible(true);
fileChooser = new JFileChooser();
btnOpen.addActionListener(e -> {
int returnValue = fileChooser.showOpenDialog(imageFrame);
if (returnValue == JFileChooser.APPROVE_OPTION) {
String filePath = fileChooser.getSelectedFile().getAbsolutePath();
ImageIcon imageIcon = new ImageIcon(filePath);
imageLabel.setIcon(new ImageIcon(imageIcon.getImage().getScaledInstance(400, 300, Image.SCALE_SMOOTH)));
imageLabel.setText("");
}
});
btnClear.addActionListener(e -> {
imageLabel.setIcon(null);
imageLabel.setText("No Image Selected");
});
}
}
Main Menu:
- Terdapat dua tombol: "Open Login Panel" untuk membuka panel login dan "Open Image Viewer" untuk menampilkan aplikasi penampil gambar.
- Menu ini dirancang untuk membuat aplikasi lebih interaktif dan terorganisir.
Login Panel:
- Sama seperti pada latihan 1, panel login dibuat dengan komponen
JLabel,JTextField, danJPasswordField. - Tombol "Login" memeriksa kecocokan username dan password, sedangkan tombol "Cancel" menghapus input.
- Sama seperti pada latihan 1, panel login dibuat dengan komponen
Image Viewer:
- Sama seperti pada latihan 2, aplikasi ini menggunakan
JFileChooseruntuk memilih gambar, kemudian menampilkan gambar diJLabel.
- Sama seperti pada latihan 2, aplikasi ini menggunakan
Manajemen Frame:
JFrame.DISPOSE_ON_CLOSEmemastikan frame yang dibuka hanya menutup frame tertentu, sementara aplikasi utama tetap berjalan.
Komentar
Posting Komentar