IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構(gòu)的步驟和實(shí)現(xiàn)思路
在 IntelliJ IDEA 中結(jié)合 JFormDesigner 插件,通過(guò) Swing 框架實(shí)現(xiàn)一個(gè)管理系統(tǒng)的 MVC 架構(gòu)是一種經(jīng)典的開(kāi)發(fā)方式。以下是具體的步驟和實(shí)現(xiàn)思路,包含從項(xiàng)目創(chuàng)建到 MVC 架構(gòu)的核心代碼實(shí)現(xiàn)。
1. 項(xiàng)目結(jié)構(gòu)設(shè)計(jì)
為了清晰的 MVC 分層架構(gòu),建議按照以下方式組織項(xiàng)目文件:
src ├── controller // 控制層 │ └── UserController.java ├── model // 模型層 │ └── User.java │ └── UserDAO.java ├── view // 視圖層 │ └── MainFrame.java │ └── UserForm.java ├── App.java // 主程序入口
每個(gè)模塊有明確職責(zé):
- Model:處理數(shù)據(jù)和業(yè)務(wù)邏輯,比如數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)訪問(wèn)等。
- View:負(fù)責(zé)界面展示,使用 JFormDesigner 設(shè)計(jì) Swing 界面。
- Controller:負(fù)責(zé)接收用戶(hù)操作,協(xié)調(diào)模型和視圖的交互。
2. 使用 JFormDesigner 設(shè)計(jì)界面
配置 JFormDesigner 插件
- 在 IntelliJ IDEA 中,安裝 JFormDesigner 插件(插件市場(chǎng)中搜索 "JFormDesigner")。
- 新建一個(gè)
.jfd
文件,在界面設(shè)計(jì)工具中拖放組件(如表格、按鈕、文本框等)。 - 將生成的
.java
文件放入view
包中。
示例界面
假設(shè)需要一個(gè)用戶(hù)管理界面(包括用戶(hù)列表展示和添加用戶(hù)功能)。你可以通過(guò) JFormDesigner 設(shè)計(jì)如下簡(jiǎn)單界面:
JTable
:顯示用戶(hù)列表。JButton
:添加用戶(hù)按鈕。JTextField
:用于輸入用戶(hù)信息。
界面文件示例(UserForm.java
):
package view; import javax.swing.*; public class UserForm extends JPanel { public JTable userTable; public JTextField nameField; public JButton addButton; public UserForm() { // 自動(dòng)生成的代碼,由 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. 編寫(xiě) Model 層
在 Model 層,定義用戶(hù)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)存儲(chǔ)方式(可以是內(nèi)存存儲(chǔ),也可以是數(shù)據(jù)庫(kù))。
用戶(hù)實(shí)體類(lèi)(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ù)據(jù)訪問(wèn)類(lèi)(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. 編寫(xiě) Controller 層
控制層用于處理視圖的操作事件,將事件結(jié)果傳遞給模型。
控制器類(lèi)(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; // 簡(jiǎn)單驗(yàn)證 } userDAO.addUser(new User(name)); userForm.nameField.setText(""); // 清空輸入框 loadUserTable(); // 更新表格數(shù)據(jù) } 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. 主程序入口
主程序?qū)⒛P?、視圖和控制器連接在一起,完成整個(gè)系統(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. 運(yùn)行效果
- 運(yùn)行主程序
App.java
。 - 啟動(dòng)后,你會(huì)看到一個(gè)用戶(hù)管理界面。
- 輸入用戶(hù)姓名,點(diǎn)擊“Add User”按鈕,用戶(hù)信息會(huì)顯示在表格中。
7. 優(yōu)化和擴(kuò)展
- 持久化存儲(chǔ):目前用戶(hù)數(shù)據(jù)是保存在內(nèi)存中的,可以擴(kuò)展為使用數(shù)據(jù)庫(kù)(如 MySQL 或 SQLite)。
- 功能擴(kuò)展:可以添加刪除用戶(hù)、更新用戶(hù)信息等功能。
- 表格美化:利用 Swing 的
TableCellRenderer
自定義表格的顯示樣式。
通過(guò)以上步驟,你可以使用 JFormDesigner 和 Swing 實(shí)現(xiàn)一個(gè)管理系統(tǒng)的 MVC 架構(gòu)。這種方式雖然經(jīng)典,但 Swing 已經(jīng)是相對(duì)較老的技術(shù)棧。如果未來(lái)有更復(fù)雜的需求,建議考慮現(xiàn)代框架(如 JavaFX 或 Web 技術(shù))來(lái)替代 Swing。
到此這篇關(guān)于IDEA用jformdesigner插件做管理系統(tǒng)MVC架構(gòu)的文章就介紹到這了,更多相關(guān)idea 使用jformdesigner內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Mvc下實(shí)現(xiàn)以文件流方式下載文件的方法示例
這篇文章主要介紹了Spring Mvc下實(shí)現(xiàn)以文件流方式下載文件的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05netty服務(wù)端處理請(qǐng)求聯(lián)合pipeline分析
這篇文章主要為大家介紹了netty服務(wù)端處理請(qǐng)求聯(lián)合pipeline示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Sa-Token中的SaSession對(duì)象使用學(xué)習(xí)示例詳解
這篇文章主要為大家介紹了Sa-Token中的SaSession對(duì)象使用學(xué)習(xí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07StateMachine 狀態(tài)機(jī)機(jī)制深入解析
這篇文章主要介紹了,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Springboot使用redis實(shí)現(xiàn)接口Api限流的實(shí)例
本文介紹的內(nèi)容如題,就是利用redis實(shí)現(xiàn)接口的限流(某時(shí)間范圍內(nèi),最大的訪問(wèn)次數(shù)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Java使用screw來(lái)對(duì)比數(shù)據(jù)庫(kù)表和字段差異
這篇文章主要介紹了Java如何使用screw來(lái)對(duì)比數(shù)據(jù)庫(kù)表和字段差異,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12