Java GUI 桌面应用开发(java开发桌面应用程序)

  前言

  虽然现在已经很少项目会涉及GUI技术,但作为一个合格的java开发工程师,还是得了解才得

  本文记录,idea使用JFormDesigner插件进行Java GUI 桌面应用开发

  GUI Swing

  图形化的用户界面(Graphical User Interface,简称GUI),java提供了一套可以轻松构建GUI的工具

  GUI开发包:
    java.AWT 包: 主要提供字体/布局管理器
    javax.Swing 包:主要提供各种组件(窗口/按钮/文本框),商业开发常用
    java.awt.event 包:事件处理,后台功能的实现

  Swing组件

    相对于AWT而言Swing包中提供了更多的丰富的、快捷的、强大的GUI组件

    大体上包括以下内容:window顶层容器(窗口)、container中间容器(面板)、component基本组件(按钮、标签等)

Java GUI 桌面应用开发(java开发桌面应用程序)

  JFormDesigner

  JFormDesigner,高级Swing GUI设计器,支持MigLayout, JGoodies FormLayout, GroupLayout(自由设计),TableLayout和GridBagLayout,这使得它很容易创建专业外观的表单。

  通俗的讲就是使用这个插件进行拖拉布局,快速创建页面,但是这个插件需要购买许可才能使用

  破解教程:https://www.cnblogs.com/ylkh/p/13858433.html

1、打开注册机JFormDesigner_Keygen.exe,选择idea plug-in,里面的可以随便填2、点击Patch,选择已安装的插件,生成bak文件(插件位置idea安装路径pluginsFormDesigner)3、点击generate生成JFormDesigner_license.txt文件

Java GUI 桌面应用开发(java开发桌面应用程序)

  代码编写

  创建图形页面,插件会自动同步生成java文件

Java GUI 桌面应用开发(java开发桌面应用程序)Java GUI 桌面应用开发(java开发桌面应用程序)Java GUI 桌面应用开发(java开发桌面应用程序)

  进行拖拉布局

Java GUI 桌面应用开发(java开发桌面应用程序)

  关键点:

  1、顶层容器(JFrame)的Name值要为:this

  2、生成的java文件要继承 javax.swing.JFrame

public class TestFrame extends javax.swing.JFrame{ //省略其他代码... }

  3、需要进行单选的RadioButton,要添加同一个Button Group

Java GUI 桌面应用开发(java开发桌面应用程序)

  4、defaultCloseOperation要设置成EXIT,点击X号退出页面时才会退出程序

Java GUI 桌面应用开发(java开发桌面应用程序)

  5、绑定事件,给按钮添加一个actionPerformed即可

Java GUI 桌面应用开发(java开发桌面应用程序)

  6、关闭当前页面:this.dispose(); //退出当前界面

  7、代码弹出对话框:JOptionPane.showMessageDialog(null, "恭喜哦,登录成功!");// Message 对话框

  生成的java文件

/* * Created by JFormDesigner on Tue Dec 28 15:24:42 CST 2021 */package cn.huanzi.qch.view;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * 测试 */public class TestFrame extends javax.swing.JFrame{ public TestFrame() { initComponents(); setVisible(true);// 显示 setLocationRelativeTo(null);// JFrame 窗口居中显示 } public static void main(String[] args) { java.awt.EventQueue.invokeLater(() -> { new TestFrame(); System.out.println("启动成功!"); }); } private void SubmitActionPerformed(ActionEvent e) { // TODO add your code here System.out.println("---------------------------"); System.out.println("姓名:" userNameTestField.getText()); String sex = ""; if (xyRadioButton.isSelected()) { sex = "男"; } else if (xxRadioButton.isSelected()) { sex = "女"; }else if (yyRadioButton.isSelected()) { sex = "不确定"; } System.out.println("性别:" sex); String hobby = ""; if (singCheckBox.isSelected()) { hobby = "唱、"; } if (skipCheckBox.isSelected()) { hobby = "跳、"; } if (rapCheckBox.isSelected()) { hobby = "rap、"; } System.out.println("爱好:" hobby); System.out.println("自我评价:" selfTextArea.getText()); } private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents label1 = new JLabel(); userNameTestField = new JTextField(); label2 = new JLabel(); label3 = new JLabel(); submit = new JButton(); reset = new JButton(); xxRadioButton = new JRadioButton(); xyRadioButton = new JRadioButton(); yyRadioButton = new JRadioButton(); scrollPane1 = new JScrollPane(); selfTextArea = new JTextArea(); label4 = new JLabel(); label5 = new JLabel(); singCheckBox = new JCheckBox(); skipCheckBox = new JCheckBox(); rapCheckBox = new JCheckBox(); //======== this ======== setBackground(Color.gray); setTitle("Test GUI"); setForeground(SystemColor.windowText); setMinimumSize(new Dimension(300, 200)); setResizable(false); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); Container contentPane = getContentPane(); contentPane.setLayout(null); //---- label1 ---- label1.setText("u59d3u540duff1a"); contentPane.add(label1); label1.setBounds(34, 55, 65, 30); contentPane.add(userNameTestField); userNameTestField.setBounds(119, 55, 200, userNameTestField.getPreferredSize().height); //---- label2 ---- label2.setText("u6027u522buff1a"); contentPane.add(label2); label2.setBounds(34, 95, 65, 30); //---- label3 ---- label3.setText("u81eau6211u8bc4u4ef7uff1a"); contentPane.add(label3); label3.setBounds(34, 165, 65, 30); //---- submit ---- submit.setText("u63d0u4ea4"); submit.addActionListener(e -> SubmitActionPerformed(e)); contentPane.add(submit); submit.setBounds(new Rectangle(new Point(64, 271), submit.getPreferredSize())); //---- reset ---- reset.setText("u91cdu7f6e"); contentPane.add(reset); reset.setBounds(new Rectangle(new Point(219, 271), reset.getPreferredSize())); //---- xxRadioButton ---- xxRadioButton.setText("u5973"); contentPane.add(xxRadioButton); xxRadioButton.setBounds(new Rectangle(new Point(184, 100), xxRadioButton.getPreferredSize())); //---- xyRadioButton ---- xyRadioButton.setText("u7537"); contentPane.add(xyRadioButton); xyRadioButton.setBounds(new Rectangle(new Point(129, 100), xyRadioButton.getPreferredSize())); //---- yyRadioButton ---- yyRadioButton.setText("u4e0du786eu5b9a"); contentPane.add(yyRadioButton); yyRadioButton.setBounds(new Rectangle(new Point(239, 100), yyRadioButton.getPreferredSize())); //======== scrollPane1 ======== { scrollPane1.setViewportView(selfTextArea); } contentPane.add(scrollPane1); scrollPane1.setBounds(117, 165, 202, 71); //---- label4 ---- label4.setText("u6d4bu8bd5u8868u5355"); label4.setFont(label4.getFont().deriveFont(22f)); contentPane.add(label4); label4.setBounds(124, 0, 100, 45); //---- label5 ---- label5.setText("u7231u597duff1a"); contentPane.add(label5); label5.setBounds(34, 130, 65, 30); //---- singCheckBox ---- singCheckBox.setText("u5531"); contentPane.add(singCheckBox); singCheckBox.setBounds(new Rectangle(new Point(129, 135), singCheckBox.getPreferredSize())); //---- skipCheckBox ---- skipCheckBox.setText("u8df3"); contentPane.add(skipCheckBox); skipCheckBox.setBounds(new Rectangle(new Point(184, 135), skipCheckBox.getPreferredSize())); //---- rapCheckBox ---- rapCheckBox.setText("rap"); contentPane.add(rapCheckBox); rapCheckBox.setBounds(239, 135, 50, rapCheckBox.getPreferredSize().height); { // compute preferred size Dimension preferredSize = new Dimension(); for(int i = 0; i < contentPane.getComponentCount(); i ) { Rectangle bounds = contentPane.getComponent(i).getBounds(); preferredSize.width = Math.max(bounds.x bounds.width, preferredSize.width); preferredSize.height = Math.max(bounds.y bounds.height, preferredSize.height); } Insets insets = contentPane.getInsets(); preferredSize.width = insets.right; preferredSize.height = insets.bottom; contentPane.setMinimumSize(preferredSize); contentPane.setPreferredSize(preferredSize); } setSize(400, 365); setLocationRelativeTo(null); //---- buttonGroup2 ---- ButtonGroup buttonGroup2 = new ButtonGroup(); buttonGroup2.add(xxRadioButton); buttonGroup2.add(xyRadioButton); buttonGroup2.add(yyRadioButton); // JFormDesigner - End of component initialization //GEN-END:initComponents } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables private JLabel label1; private JTextField userNameTestField; private JLabel label2; private JLabel label3; private JButton submit; private JButton reset; private JRadioButton xxRadioButton; private JRadioButton xyRadioButton; private JRadioButton yyRadioButton; private JScrollPane scrollPane1; private JTextArea selfTextArea; private JLabel label4; private JLabel label5; private JCheckBox singCheckBox; private JCheckBox skipCheckBox; private JCheckBox rapCheckBox; // JFormDesigner - End of variables declaration //GEN-END:variables}

  效果演示

Java GUI 桌面应用开发(java开发桌面应用程序)

  后记

  掌握了基本操作后,下面分享我在大学时期做的单机版五子棋、以及java课程实训作品:图书管理系统

  单机版五子棋

  猛戳:Java GUI 单机版五子棋

Java GUI 桌面应用开发(java开发桌面应用程序)

  图书管理系统

  数据库用mysql,GUI图形化页面实现用户登录后对图书进行CRUD操作

Java GUI 桌面应用开发(java开发桌面应用程序)

  登录页面

Java GUI 桌面应用开发(java开发桌面应用程序)

  图书管理

Java GUI 桌面应用开发(java开发桌面应用程序)Java GUI 桌面应用开发(java开发桌面应用程序)

  图书类别管理

Java GUI 桌面应用开发(java开发桌面应用程序)Java GUI 桌面应用开发(java开发桌面应用程序)

  关于我们

Java GUI 桌面应用开发(java开发桌面应用程序)

版权声明

作者:huanzi-qch

出处:https://www.cnblogs.com/huanzi-qch

若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月19日 下午2:55
下一篇 2024年5月19日 下午3:07

相关推荐

  • 项目技术攻关的必要性怎么写

    项目技术攻关的必要性 在项目中,技术攻关是非常重要的一项工作。技术攻关是指对项目相关技术进行深入研究和探讨,以便解决项目中遇到的问题和难题。通过技术攻关,项目团队可以更好地理解项目…

    科研百科 2024年11月6日
    57
  • 科研项目劳务费和人工费

    科研项目劳务费和人工费是科研项目中非常重要的费用之一。这些费用用于支付研究人员、实验室工人和其他相关工作人员的工资和租金等。在现代科学界,劳务费和人工费的变化往往取决于许多因素,例…

    科研百科 2025年5月8日
    0
  • 中国最早取得的科技成就

    中国最早取得的科技成就中国最早取得的科技成就,是为了全中国人民的学习、娱乐以及社会发展的,是在为我国社会主义建设创造良好的条件,是中国古代伟大的创新创造者。中国最早的近代化纲领是什…

    科研百科 2024年11月21日
    2
  • SAP License:家装ERP(erp-sap)

    针对家装行业的特殊性,赛锐信息家装ERP系统采用Java开发技术,可以根据客户需求使用B/S或者C/S构架,通过对家装企业业务流水线及其行业特点的精准把握,优化、整合家装企业业务流…

    科研百科 2023年5月24日
    269
  • 客户关系管理的定义及三种常见的CRM系统(客户关系管理的定义及三种常见的crm系统)

    客户关系管理的定义及三种常见的CRM系统(客户关系管理的定义及三种常见的crm系统) CRM旨在加强企业与客户的关系,建立以客户为中心的经营策略。随着技术的迅速发展,CRM的实施变…

    科研百科 2024年3月23日
    106
  • 江山市党建全科服务网格模式的实践与启示

    习近平总书记指出,党的工作最坚实的力量支撑在基层,最突出的矛盾问题也在基层。基层作为社会治理系统的基础部分,党建在其中扮演着龙头工程的角色。近年来,江山市创新推出党建“1 7”工作…

    科研百科 2023年2月10日
    330
  • 研究生自己找课题(研究生找科研项目难吗知乎)

    研究生找科研项目难吗? 近年来,随着科技的不断发展,越来越多的研究生开始进入科研领域。然而,对于研究生来说,找科研项目是一项具有挑战性的任务。在找科研项目的过程中,研究生需要满足一…

    科研百科 2024年4月6日
    191
  • web项目源码图书馆管理系统

    Web项目源码图书馆管理系统 图书馆是一个知识共享场所,人们可以在这里获取各种信息和资源。但是,传统的图书馆系统存在许多问题,例如,信息不够丰富,管理不够高效,不够灵活等。因此,开…

    科研百科 2025年1月24日
    1
  • “五化”同步,让社会治理增效赋能(社会治理 五化)

    来源:海外网 近日,山东省新泰市放城镇放城二村网格员徐秀梅在巡查时发现村里有一处“平安灯”故障,网格员立即通过“民安通”APP将事件上报到村,随后村两委成员第一时间赶赴现场查看“平…

    科研百科 2023年9月21日
    137
  • 党建引领基层网格管理工作不够有力

    党建引领基层网格管理工作不够有力 近年来,随着城市化进程的不断加快,城市基层管理问题日益突出。为了更好地解决这些问题,许多城市都采取了党建引领基层网格管理工作的方式,但是这种方法是…

    科研百科 2024年11月15日
    3