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

相关推荐

  • 大同云州区联社:打造“党建书吧”践行“初心使命”

    大同云州区联社大力推动“红色书香阅读”氛围建设,通过划分原有阅览室功能分区重点打造“党建书吧”,将党建书籍增加到200余册,在满足职工学习阅读基本需求基础上,进一步为党员干部和职工…

    科研百科 2023年3月7日
    311
  • 工程项目管理质量管理

    工程项目管理质量管理是项目管理中非常重要的两个部分。工程项目管理质量管理的重要性体现在以下几个方面: 1. 项目质量管理是保证项目成功的重要因素。项目质量管理包括项目的计划、执行、…

    科研百科 2024年5月27日
    111
  • “扬子云党建”平台系统上线(扬子云集)

    发展党员的纸质档案容易遗失或者损毁怎么避免?党组织备案登记管理不清晰如何解决?近日,扬子国投推出“扬子云党建”平台系统,构建起“党务管理标准化、党建学习集约化、党建考核一体化、以智…

    科研百科 2023年9月21日
    183
  • crm客户关系管理系统介绍

    CRM客户关系管理系统介绍 CRM客户关系管理系统是一种能够帮助企业有效地管理客户关系的软件系统。它可以帮助企业更好地了解客户的需求和偏好,并提供个性化的服务和产品,以提高客户满意…

    科研百科 2024年8月20日
    42
  • 留学机构科研项目经历

    在留学机构科研项目经历中,我深刻认识到了科研项目对于留学中介的重要性。作为留学中介,我们的目标不仅仅是帮助学生申请到理想的学校,还要帮助学生在学术上取得更好的成绩。因此,科研项目是…

    科研百科 2025年3月2日
    0
  • 高校教师申请科研项目

    高校教师申请科研项目 近年来,随着国家对于科技创新的重视,高校教师申请科研项目的情况越来越多。作为一名高校教师,申请科研项目是实现个人发展和为国家发展做出贡献的重要途径。本文将介绍…

    科研百科 2025年4月21日
    1
  • 应当发挥中国管理科学研究院的国家队功能作用

    中国式现代化管理科学的开创之作 ——评李树林的《中国软力量:发展中国家管理科学问题 李 锦 写在前面的话 今天,发表我写的评论文章《中国式现代化管理科学的开创之作 ——评李树林的《…

    科研百科 2024年6月28日
    73
  • 基层党建亮点汇丨齐河:做实“四个一”党建引领城市基层治理(党建引领基层治理亮点工作)

    奋进新征程、建功新时代。2022年,大众日报·山东党建云平台全新启动“红星耀齐鲁”大型融媒报道活动,推出齐鲁党员星力量、基层党建亮点汇、第一书记风采录、高校党建品牌展四个单元板块。…

    科研百科 2024年6月25日
    75
  • 供热科研项目

    供热科研项目 随着城市化进程的加速,城市热岛效应越来越受到人们关注。供热作为城市的主要能源来源之一,其质量、效率、安全等方面都直接关系到城市居民的生活质量。为了改善供热质量,提高热…

    科研百科 2025年2月7日
    1
  • 研发部程序月度绩效考核指标

    研发部程序月度绩效考核指标研发部程序月度绩效考核指标1.编制一批经过审核认证的计算机技术人才2.通过电子行业的专项部门对电子行业的专项工作进行研究3.通过数据库进行数据分析4.通过…

    科研百科 2024年11月28日
    4