import javax.swing.*; import java.awt.*; // Subclass extending BasicWindow for a login window public class LoginWindow extends BasicWindow { private JLabel usernameLabel, passwordLabel; private JTextField usernameField; private JPasswordField passwordField; private JButton loginButton; public LoginWindow(String title, int width, int height) { super(title, width, height); // Components specific to LoginWindow usernameLabel = new JLabel("Username:"); passwordLabel = new JLabel("Password:"); usernameField = new JTextField(20); passwordField = new JPasswordField(20); loginButton = new JButton("Login"); // Layout setup using BorderLayout JPanel panel = new JPanel(new BorderLayout()); JPanel loginPanel = new JPanel(new GridLayout(3, 2)); loginPanel.add(usernameLabel); loginPanel.add(usernameField); loginPanel.add(passwordLabel); loginPanel.add(passwordField); loginPanel.add(new JLabel()); // Empty label for spacing loginPanel.add(loginButton); panel.add(loginPanel, BorderLayout.CENTER); add(panel); // Set up additional functionality loginButton.addActionListener(e -> { String username = usernameField.getText(); char[] passwordChars = passwordField.getPassword(); String password = new String(passwordChars); JOptionPane.showMessageDialog(this, "Logging in with Username: " + username + " and Password: " + password); }); } }