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");
});
}
}


  1. 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.
  2. Login Panel:

    • Sama seperti pada latihan 1, panel login dibuat dengan komponen JLabel, JTextField, dan JPasswordField.
    • Tombol "Login" memeriksa kecocokan username dan password, sedangkan tombol "Cancel" menghapus input.
  3. Image Viewer:

    • Sama seperti pada latihan 2, aplikasi ini menggunakan JFileChooser untuk memilih gambar, kemudian menampilkan gambar di JLabel.
  4. Manajemen Frame:

    • JFrame.DISPOSE_ON_CLOSE memastikan frame yang dibuka hanya menutup frame tertentu, sementara aplikasi utama tetap berjalan.

Komentar

Postingan populer dari blog ini

Pemrograman Berorientasi Objek A - ETS

Tugas Pertemuan 3 - 5025231186

Tugas Pertemuan 4 - 5025231186