JFormDesigner 是一款用于設計和創(chuàng)建圖形用戶界面(GUI)的插件,它允許開發(fā)者使用可視化界面設計器輕松創(chuàng)建 Swing 和 AWT 界面。
本文將介紹在 IntelliJ IDEA 中使用 JFormDesigner 的簡單步驟以及使用教程,同時用一個簡單的登錄界面案例展示IDEA中JFormDesigner的使用。
1 安裝 JFormDesigner 插件
-
打開 IntelliJ IDEA ,點擊File→Settings,打開軟件設置:
-
在Settings中選擇Plugins,在右側的搜索欄輸入插件名JFormDesigner進行搜索,選擇第一個插件,點擊install進行下載安裝,下載完成后會提示需重啟IDEA:
-
重啟IDEA:
-
重啟IDEA后,點擊Filey→Manage IDE Settings→Import Settings,復制本地IDEA的下載路徑并在文件管理器中打開:
-
在文件管理器中進入上面的導入設置路徑后,依次點擊plugins→JFormDesigner→lib:
找到JFormDesigner-Idea.jar,此處需復制JFormDesigner-Idea.jar所在路徑(注冊機需要用到): -
!!關閉IDEA!!
準備開始注冊JFormDesigner插件。 -
下載注冊機:注冊機下載地址
-
(退出電腦殺毒軟件)雙擊注冊機打開,選擇產品名稱,點擊Patch。
-
選擇第5步復制的JFormDesigner-Idea.jar所在路徑,點擊打開:
注冊機提示匹配成功: -
在注冊機中點擊Generate,生成密鑰:
保存該密鑰到任意位置: -
點擊Exit退出虛擬機,打開IDEA,點擊File→:Settings,找到JFormDesigner,點擊Register進行注冊:
點擊License File,并找到之前生成的密鑰文件(或者打開密鑰文件復制到文本框中): -
接下來就可以暢快地使用JFormDesigner設計界面了~
2 JFormDesigner 使用教程
2.1 新建JFormDesigner Form時的選項
當在IDEA中新建一個項目后,選擇src新建JFormDesigner Form時,有多個選項可供選擇,如下圖所示:
- Name(名稱):該Form的名稱。
-
SuperClass(超類):該 Form 繼承的類。
- JPanel: 一個輕量級容器,通常用于包含和組織其他 GUI 組件。它沒有標題欄或邊框,常用于將組件分組或創(chuàng)建復雜的界面。
- JDialog:一個彈出式對話框窗口,通常用于顯示與主窗口相關的臨時信息、接收用戶輸入或執(zhí)行特定任務。它可以有標題欄和可關閉按鈕。
- JFrame:頂層窗口,用于創(chuàng)建主應用程序窗口。它具有標題欄、最大化和最小化按鈕,通常包含應用程序的主要界面。
- other:允許指定任何其他的超類。
-
Button bar(按鈕欄):是否在 Form 的底部自動生成按鈕欄,用于執(zhí)行特定的操作或響應用戶的輸入。
- OK / Cancel(確定/取消):同時生成OK和Cancel兩個按鈕。Cancel用于取消當前的操作或關閉對話框而不保存任何更改。如果用戶不希望應用先前所做的更改,可以點擊"Cancel"按鈕。這通常用于撤銷用戶可能已經進行的修改。
- OK(確定): 通常用于確認用戶的選擇或輸入。當用戶完成了某個操作或在對話框中進行了設置,并希望將其應用時,可以點擊"OK"按鈕。這會觸發(fā)確認操作,將用戶所做的更改保存并關閉對話框。
- none(無):一個不執(zhí)行任何操作的按鈕,或者表示不選擇任何選項。在某些上下文中,可能會使用"None"作為某個設置的默認選項,表示用戶選擇不設置任何特定的值。
- Help(幫助):提供用戶幫助和支持的按鈕。點擊"Help"按鈕通常會打開相關的幫助文檔或顯示有關當前上下文的信息,以便用戶了解如何使用應用程序或解決問題。
-
Layout manager(布局管理器):
- BorderLayout: 將組件放置在邊界(North、South、East、West、Center)位置,適用于簡單的布局需求。
- BoxLayout:水平或垂直排列組件,可以是盒式布局(水平或垂直排列)或流式布局(按添加順序排列)。
- CardLayout:允許在同一容器中切換多個組件,只顯示其中一個。適用于需要在不同視圖間切換的場景,如向導式界面。
- FlowLayout:按照添加順序在行或列上排列組件,適用于簡單的流式布局。
- FormLayout(JGoodies):提供了更高級的表單布局,支持在表格中精確控制組件的位置和大小。
- GridBagLayout:強大的布局管理器,可以在網格中精確控制組件的位置和大小。
- GridLayout: 將組件放置在矩形的網格中,所有的單元格大小相等。適用于簡單的網格布局。
- GroupLayout(Free Design): GroupLayout 是 GroupLayout 提供的一種布局方式,可實現(xiàn)復雜的布局。
- HorizontalLayout(SwingX):SwingX 庫提供的水平布局,用于水平排列組件。
- IntelliJ IDEA GridLayout:IntelliJ IDEA 特有的網格布局,與標準 GridLayout 有一些差異。
- MigLayout: 強大而靈活的布局管理器,可以應對各種復雜的布局需求。
- null Layout:不使用任何布局管理器,組件的位置和大小需要手動設置。
- TableLayout:使用表格形式排列組件,支持相對和絕對定位。
- VerticalLayout:SwingX 庫提供的垂直布局,用于垂直排列組件。
-
Store strings in resource bundle (properties file):用于啟用或禁用本地化支持。啟用本地化支持后,JFormDesigner 將為每個組件生成一個 .properties 文件,用于存儲本地化文本。這對于多語言應用程序是非常有用的,因為它允許你輕松地將應用程序的文本翻譯成不同的語言。
-
Resource Bundle Name(資源包名稱): 資源包是包含本地化信息的文件,其中包括文本字符串、圖像和其他本地化資源。資源包名稱是指用于標識和加載這些資源包的名稱。在 Java 中,這通常是一個屬性文件,例如 messages.properties。通過使用不同的資源包名稱,開發(fā)者可以為不同的語言或地區(qū)提供相應的本地化資源。
例如,在 Java 中,可以使用ResourceBundle.getBundle("messages", locale)
來獲取與特定區(qū)域設置(locale)相關的資源包。這里的 “messages” 就是資源包名稱。 -
Prefix for Generated Keys(生成的鍵的前綴): 在本地化資源文件中,每個本地化字符串都與一個唯一的鍵相關聯(lián)。生成這些鍵時,有時會使用前綴來提供更多的上下文信息或防止沖突。
例如,如果有一個按鈕的標簽需要本地化,可以使用鍵值對,其中鍵可能是 “button.ok
” 或 “button.cancel
”。在這里,“button” 就是生成的鍵的前綴,有助于組織和區(qū)分不同部分的本地化字符串。 - Auto-externalize strings:是否自動將應用程序中的字符串提取出來,以便更容易進行本地化。
-
Resource Bundle Name(資源包名稱): 資源包是包含本地化信息的文件,其中包括文本字符串、圖像和其他本地化資源。資源包名稱是指用于標識和加載這些資源包的名稱。在 Java 中,這通常是一個屬性文件,例如 messages.properties。通過使用不同的資源包名稱,開發(fā)者可以為不同的語言或地區(qū)提供相應的本地化資源。
2.2 JFormDesigner Form界面布局
2.3 JFormDesigner 組件
2.3.1 Components基本組件
- JLabel(標簽):非可編輯文本組件,用于顯示單行文本或圖像。它通常用于標識其他組件或提供有關其他組件的信息。
- JTextField(文本輸入框):允許用戶輸入和編輯單行文本。它常用于接受用戶輸入,如用戶名、密碼等。
- JComboBox(下拉列表):提供一個下拉菜單,用戶可以從中選擇一個選項。適用于需要用戶在預定義選項中進行選擇的場景。
- JButton(按鈕):在用戶點擊時觸發(fā)動作的按鈕。用戶可以點擊按鈕來執(zhí)行與按鈕關聯(lián)的操作,例如提交表單、保存文件等。
- JCheckBox(復選框):允許用戶選擇或取消選擇一個或多個選項,適用于開啟或關閉特定功能或選項。
- JRadioButton(單選按鈕):允許用戶從一組互斥選項中選擇一個,常用于需要用戶在幾個相關選項中進行單一選擇的情況。
- JToggleButton(切換按鈕):可以在按下和未按下狀態(tài)之間切換的按鈕,適用于需要用戶切換兩種狀態(tài)的場景。
- JTextArea(多行文本輸入?yún)^(qū)):允許用戶輸入和編輯多行文本,通常用于需要用戶輸入大段文本的場景。
- JFormattedTextField(格式化文本輸入框):限制用戶輸入特定格式的文本,可用于確保用戶按照特定要求輸入數(shù)據(jù)。
- JPasswordField (密碼輸入框):專為密碼輸入而設計的文本輸入字段,以保護用戶輸入的密碼信息不可見。
- JTextPane(樣式文本顯示):支持樣式文本的文本組件,允許在同一文檔中使用不同的樣式,適用于需要顯示富文本內容的場景。
- JEditorPane(富文本編輯器):支持富文本編輯和HTML顯示的文本組件,用于需要用戶編輯富文本內容的場合。
- JSpinner(數(shù)值選擇器):允許用戶從范圍中選擇一個值的組件,適用于需要用戶在一定范圍內選擇數(shù)值的場景。
- JList(列表):顯示項目列表以供用戶選擇的組件。用于顯示一列項目,用戶可以選擇一個或多個。
- JTable(表格):表示一個二維表格,用于顯示和編輯表格數(shù)據(jù)。通常用于顯示數(shù)據(jù)庫查詢結果或其他表格形式的數(shù)據(jù)。
- JTree(樹形結構):以樹形結構顯示分層數(shù)據(jù)的組件,常用于呈現(xiàn)層次結構的數(shù)據(jù)。
- JProgressBar(進度條):表示任務進度的可視組件,用于顯示某項任務的完成百分比。
- JScrollBar(滾動條):允許用戶在大量內容中滾動的組件。通常與其他組件一起使用,以顯示超過可見區(qū)域的內容。
- JSeparator(分隔符):用于分組組件的可視分隔符??捎糜谠鰪奤I的可讀性和組織性。
- JSlider(滑塊):允許用戶從連續(xù)范圍中選擇一個值的組件。用于需要用戶在一個范圍內選擇數(shù)值的場景。
- Action(動作):封裝動作的對象,可與各種UI組件關聯(lián),是用于處理用戶操作的通用方式。
- Horizontal Spacer/Vertical Spacer(水平和垂直間隔器):用于布局目的的組件,用于在其他組件之間添加空間。有助于控制組件之間的距離和布局。
2.3.2 Containers中間容器(面板)
- JPanel:用于組織和布局其他組件的通用容器。
- JTabbedPane:允許用戶在多個選項卡之間切換的容器,每個選項卡包含不同的組件。
- JScrollPane:提供另一個組件的可滾動視圖的容器。
- JSplitPane:允許用戶水平或垂直調整和分割兩個組件的容器。
- JToolBar:用于工具欄組件的容器。
- JToolBar Separator:用于在工具欄中視覺上分組組件的分隔符。
- JDesktopPane:在桌面樣式GUI中管理內部框架的容器。
- JInternalFrame:存在于另一個框架內部的框架。
- JLayeredPane:允許組件層疊在彼此上方的容器。
2.3.3 Windows頂級容器(窗口)
- JDialog:表示對話框的頂級容器。
- JFrame:表示應用程序主窗口的頂級容器。
- JWindow:表示輔助窗口的頂級容器。
- Dialog/Frame/Window:表示對話框框架和窗口的通用類。
2.3.4 Menus(菜單)
- JMenuBar:用于組織菜單的容器。
- JMenu:下拉菜單。
- JMenuItem:菜單中的項目。
- JCheckBoxMenuItem:帶有復選框的菜單項。
- JRadioButtonMenuItem:帶有單選按鈕的菜單項。
- Menu Separator:菜單中的可視分隔符。
- JPopupMenu:響應右鍵單擊而出現(xiàn)的彈出菜單。
2.3.5 JGoodies
- Label:一個標簽組件。
- Titled Separator:帶有標題的分隔符。
- Title:用于顯示有標題部分的組件。
2.3.6 Binding
- List:顯示項目列表的組件。
- ObservableList/ObservableMap:用于處理可觀察列表和映射的類。
3 JFormDesigner 使用案例
本文以用戶登錄為例,介紹JFormDesigner的應用流程。
3.1 在IDEA中新建一個項目
- IDEA菜單欄新建→項目,按照下圖設置:
- 在該項目的src處右鍵,新建一個JFormDesigner Form:
3.2 設計登錄頁面
-
雙擊jfd文件,使用JLabel、JTextField、JButton、JPasswordField、JSeparator組件設計登錄界面如下:
-
使用jfd中的按鈕預覽界面效果并生成界面代碼:
3.3 與數(shù)據(jù)庫交互
-
使用Navicat新建數(shù)據(jù)庫以及數(shù)據(jù)表,添加測試數(shù)據(jù)如下:
注:此處僅為演示案例用,因此并未對用戶密碼進行加密操作。 -
在jfd文件中,選中“登錄”按鈕,在其屬性面板中點擊Events右側的“+”號,并選擇第一個選項:
-
這時java文件中就會自動添加這兩段代碼:
為“登錄”按鈕添加監(jiān)聽事件:
監(jiān)聽到按鈕觸發(fā)后的動作: -
在java代碼中添加用戶驗證處理邏輯,關鍵代碼如下:
@Override public void actionPerformed(ActionEvent e) { if (e.getSource() == button) { // 獲取用戶輸入的賬戶和密碼 String username = textField.getText(); String password = new String(passwordField.getPassword()); // 連接到數(shù)據(jù)庫并驗證用戶 if (validateUser(username, password)) { JOptionPane.showMessageDialog(this, "登錄成功!"); } else { JOptionPane.showMessageDialog(this, "登錄失敗,請檢查用戶名和密碼!"); } } } private boolean validateUser(String username, String password) { try { // 連接到 MySQL 數(shù)據(jù)庫 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password"); // 查詢用戶表 String query = "SELECT * FROM user WHERE username = ? AND password = ?"; try (PreparedStatement preparedStatement = connection.prepareStatement(query)) { preparedStatement.setString(1, username); preparedStatement.setString(2, password); // 執(zhí)行查詢 ResultSet resultSet = preparedStatement.executeQuery(); // 如果有匹配的記錄,則驗證通過 return resultSet.next(); } } catch (SQLException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, "數(shù)據(jù)庫連接或查詢出現(xiàn)問題:" + ex.getMessage()); return false; } }
注意替換數(shù)據(jù)庫連接的 URL、用戶名和密碼。
-
下載 MySQL Connector/J 驅動程序(JDBC 驅動程序),并將其置于項目lib目錄下:
右鍵點擊該 JAR 文件,選擇 “Add as Library” 來將其添加到項目中: -
編寫main函數(shù)文章來源:http://www.zghlxwxcb.cn/news/detail-801536.html
public static void main(String[] args) { SwingUtilities.invokeLater(() -> { Login loginForm = new Login(); loginForm.setVisible(true); }); }
點擊運行按鈕,測試結果如下:
文章來源地址http://www.zghlxwxcb.cn/news/detail-801536.html
到了這里,關于【Java】IDEA中的JFormDesigner使用教程的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!