欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構的步驟和實現(xiàn)思路

 更新時間:2024年12月24日 10:27:13   作者:志-AOX  
在?IntelliJ?IDEA?中結合?JFormDesigner?插件,通過?Swing?框架實現(xiàn)一個管理系統(tǒng)的?MVC?架構是一種經典的開發(fā)方式,以下是具體的步驟和實現(xiàn)思路,包含從項目創(chuàng)建到?MVC?架構的核心代碼實現(xiàn),需要的朋友可以參考下

在 IntelliJ IDEA 中結合 JFormDesigner 插件,通過 Swing 框架實現(xiàn)一個管理系統(tǒng)的 MVC 架構是一種經典的開發(fā)方式。以下是具體的步驟和實現(xiàn)思路,包含從項目創(chuàng)建到 MVC 架構的核心代碼實現(xiàn)。

1. 項目結構設計

為了清晰的 MVC 分層架構,建議按照以下方式組織項目文件:

src
├── controller   // 控制層
│   └── UserController.java
├── model        // 模型層
│   └── User.java
│   └── UserDAO.java
├── view         // 視圖層
│   └── MainFrame.java
│   └── UserForm.java
├── App.java     // 主程序入口

每個模塊有明確職責:

  • Model:處理數(shù)據和業(yè)務邏輯,比如數(shù)據結構、數(shù)據庫訪問等。
  • View:負責界面展示,使用 JFormDesigner 設計 Swing 界面。
  • Controller:負責接收用戶操作,協(xié)調模型和視圖的交互。

2. 使用 JFormDesigner 設計界面

配置 JFormDesigner 插件

  • 在 IntelliJ IDEA 中,安裝 JFormDesigner 插件(插件市場中搜索 "JFormDesigner")。
  • 新建一個 .jfd 文件,在界面設計工具中拖放組件(如表格、按鈕、文本框等)。
  • 將生成的 .java 文件放入 view 包中。

示例界面

假設需要一個用戶管理界面(包括用戶列表展示和添加用戶功能)。你可以通過 JFormDesigner 設計如下簡單界面:

  • JTable:顯示用戶列表。
  • JButton:添加用戶按鈕。
  • JTextField:用于輸入用戶信息。

界面文件示例(UserForm.java):

package view;
import javax.swing.*;
public class UserForm extends JPanel {
    public JTable userTable;
    public JTextField nameField;
    public JButton addButton;
    public UserForm() {
        // 自動生成的代碼,由 JFormDesigner 生成
        setLayout(null);
        JLabel nameLabel = new JLabel("Name:");
        nameLabel.setBounds(20, 20, 50, 25);
        add(nameLabel);
        nameField = new JTextField();
        nameField.setBounds(80, 20, 150, 25);
        add(nameField);
        addButton = new JButton("Add User");
        addButton.setBounds(240, 20, 100, 25);
        add(addButton);
        userTable = new JTable();
        JScrollPane scrollPane = new JScrollPane(userTable);
        scrollPane.setBounds(20, 60, 320, 200);
        add(scrollPane);
    }
}

3. 編寫 Model 層

在 Model 層,定義用戶數(shù)據結構和數(shù)據存儲方式(可以是內存存儲,也可以是數(shù)據庫)。

用戶實體類(User.java):

package model;
public class User {
    private String name;
    public User(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

數(shù)據訪問類(UserDAO.java):

package model;
import java.util.ArrayList;
import java.util.List;
public class UserDAO {
    private List<User> users = new ArrayList<>();
    public List<User> getUsers() {
        return users;
    }
    public void addUser(User user) {
        users.add(user);
    }
}

4. 編寫 Controller 層

控制層用于處理視圖的操作事件,將事件結果傳遞給模型。

控制器類(UserController.java):

package controller;
import model.User;
import model.UserDAO;
import view.UserForm;
import javax.swing.table.DefaultTableModel;
public class UserController {
    private UserDAO userDAO;
    private UserForm userForm;
    public UserController(UserDAO userDAO, UserForm userForm) {
        this.userDAO = userDAO;
        this.userForm = userForm;
        initController();
    }
    private void initController() {
        userForm.addButton.addActionListener(e -> addUser());
        loadUserTable();
    }
    private void addUser() {
        String name = userForm.nameField.getText();
        if (name.isEmpty()) {
            return; // 簡單驗證
        }
        userDAO.addUser(new User(name));
        userForm.nameField.setText(""); // 清空輸入框
        loadUserTable(); // 更新表格數(shù)據
    }
    private void loadUserTable() {
        String[] columnNames = {"Name"};
        DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
        for (User user : userDAO.getUsers()) {
            tableModel.addRow(new Object[]{user.getName()});
        }
        userForm.userTable.setModel(tableModel);
    }
}

5. 主程序入口

主程序將模型、視圖和控制器連接在一起,完成整個系統(tǒng)的初始化。

主程序(App.java):

import controller.UserController;
import model.UserDAO;
import view.UserForm;
import javax.swing.*;
public class App {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            UserForm userForm = new UserForm();
            UserDAO userDAO = new UserDAO();
            new UserController(userDAO, userForm);
            JFrame frame = new JFrame("User Management System");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setContentPane(userForm);
            frame.setSize(400, 300);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        });
    }
}

6. 運行效果

  • 運行主程序 App.java
  • 啟動后,你會看到一個用戶管理界面。
  • 輸入用戶姓名,點擊“Add User”按鈕,用戶信息會顯示在表格中。

7. 優(yōu)化和擴展

  • 持久化存儲:目前用戶數(shù)據是保存在內存中的,可以擴展為使用數(shù)據庫(如 MySQL 或 SQLite)。
  • 功能擴展:可以添加刪除用戶、更新用戶信息等功能。
  • 表格美化:利用 Swing 的 TableCellRenderer 自定義表格的顯示樣式。

通過以上步驟,你可以使用 JFormDesigner 和 Swing 實現(xiàn)一個管理系統(tǒng)的 MVC 架構。這種方式雖然經典,但 Swing 已經是相對較老的技術棧。如果未來有更復雜的需求,建議考慮現(xiàn)代框架(如 JavaFX 或 Web 技術)來替代 Swing。

到此這篇關于IDEA用jformdesigner插件做管理系統(tǒng)MVC架構的文章就介紹到這了,更多相關idea 使用jformdesigner內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Mvc下實現(xiàn)以文件流方式下載文件的方法示例

    Spring Mvc下實現(xiàn)以文件流方式下載文件的方法示例

    這篇文章主要介紹了Spring Mvc下實現(xiàn)以文件流方式下載文件的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • netty服務端處理請求聯(lián)合pipeline分析

    netty服務端處理請求聯(lián)合pipeline分析

    這篇文章主要為大家介紹了netty服務端處理請求聯(lián)合pipeline示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Sa-Token中的SaSession對象使用學習示例詳解

    Sa-Token中的SaSession對象使用學習示例詳解

    這篇文章主要為大家介紹了Sa-Token中的SaSession對象使用學習示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • spring boot如何指定啟動端口

    spring boot如何指定啟動端口

    這篇文章主要介紹了spring boot如何指定啟動端口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Netty中最簡單的粘包解析方法分享

    Netty中最簡單的粘包解析方法分享

    黏包 是指網絡上有多條數(shù)據發(fā)送給服務端, 但是由于某種原因這些數(shù)據在被接受的時候進行了重新組合,本文分享了一種最簡單的黏包解析方法, 非常適用于初初初級選手
    2023-05-05
  • StateMachine 狀態(tài)機機制深入解析

    StateMachine 狀態(tài)機機制深入解析

    這篇文章主要介紹了,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Springboot使用redis實現(xiàn)接口Api限流的實例

    Springboot使用redis實現(xiàn)接口Api限流的實例

    本文介紹的內容如題,就是利用redis實現(xiàn)接口的限流(某時間范圍內,最大的訪問次數(shù)),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java使用screw來對比數(shù)據庫表和字段差異

    Java使用screw來對比數(shù)據庫表和字段差異

    這篇文章主要介紹了Java如何使用screw來對比數(shù)據庫表和字段差異,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • java并發(fā)問題概述

    java并發(fā)問題概述

    這篇文章主要介紹了java并發(fā)問題概述,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Spring IOC和aop的原理及實例詳解

    Spring IOC和aop的原理及實例詳解

    這篇文章主要介紹了Spring IOC和aop的原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論