Describe the MVC Connection. How is this design pattern implemented in Java Swing applications?

Describe the MVC Connection. How is this design pattern implemented in Java Swing applications?

Answer:-

MVC Connection in Java Swing

MVC stands for Model-View-Controller. It is a design pattern used to separate the application logic into three interconnected components. This separation helps manage complexity, improves maintainability, and promotes reusability.


1. Components of MVC

ComponentResponsibility
ModelManages data and business logic
ViewDisplays UI to the user
ControllerHandles user input and interacts with the model and view

2. MVC in Java Swing

In Swing, MVC is partially implemented internally. Swing components like JTable, JList, JTree use MVC, where:

  • Model handles data (e.g., TableModel, ListModel)
  • View is the visual component (e.g., JTable, JList)
  • Controller is often implicit (event listeners)

However, you can also explicitly implement MVC in custom applications.


3. MVC Example: Simple Login Window

Model (Logic)

public class LoginModel {
    public boolean authenticate(String username, String password) {
        return username.equals("admin") && password.equals("1234");
    }
}

View (UI)

import javax.swing.*;

public class LoginView extends JFrame {
    JTextField usernameField = new JTextField(10);
    JPasswordField passwordField = new JPasswordField(10);
    JButton loginButton = new JButton("Login");
    JLabel resultLabel = new JLabel();

    public LoginView() {
        setTitle("Login");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 150);
        setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

        add(new JLabel("Username:"));
        add(usernameField);
        add(new JLabel("Password:"));
        add(passwordField);
        add(loginButton);
        add(resultLabel);

        setVisible(true);
    }
}

Controller (Glue Logic)

import java.awt.event.*;

public class LoginController {
    public LoginController(LoginView view, LoginModel model) {
        view.loginButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String user = view.usernameField.getText();
                String pass = new String(view.passwordField.getPassword());

                if (model.authenticate(user, pass)) {
                    view.resultLabel.setText("Login successful!");
                } else {
                    view.resultLabel.setText("Invalid credentials.");
                }
            }
        });
    }
}

Main Class to Run

public class MVCDemo {
    public static void main(String[] args) {
        LoginView view = new LoginView();
        LoginModel model = new LoginModel();
        new LoginController(view, model);
    }
}

Summary of MVC in Swing

  • Model = business logic and data
  • View = UI components (Swing widgets)
  • Controller = connects user actions to model and updates the view

Leave a Reply

Your email address will not be published. Required fields are marked *