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)
上一篇 2023年5月14日 上午9:53
下一篇 2023年5月14日 上午10:09

相关推荐

  • 餐饮管理系统开发源码(餐饮管理系统开发源码是什么)

    餐饮管理系统是一款餐饮信息化管理软件,软件包括前台收银、仓库存货管理、菜单管理、外卖订单、食堂订单、会员管理、预定管理、合并账单等实用功能,并且系统可以连接电脑、收银机、电子秤等等…

    科研百科 2022年11月8日
    226
  • 合同管理薪酬水平

    合同管理薪酬水平是企业管理中非常重要的一个方面,因为它直接关系到员工的福利和企业的财务状况。合同管理是一个重要的过程,需要对合同的签订、执行和维护进行有效的管理。在合同管理中,薪酬…

    科研百科 2024年8月18日
    43
  • 邮储银行青岛分行制定党建管理考核办法(银行党建工作考核方案)

    为落实好总行党委工作部署,加大党建工作创新力度,把“严”的要求和“实”的举措贯穿于党建工作的全要素、全过程,实现“四个同步”, 近日,邮储银行青岛分行党委印发了《党建工作目标管理考…

    科研百科 2023年7月27日
    126
  • 项目管理下载

    项目管理下载:提升工作效率的实用技巧 随着信息技术的不断发展,项目管理下载成为了许多人工作中不可或缺的一部分。下载文件可以帮助人们快速完成任务,提高工作效率。本文将介绍一些实用的项…

    科研百科 2024年5月26日
    57
  • crm系统软件管理

    CRM系统软件管理 CRM(Customer Relationship Management)系统软件管理是一种有效的企业管理方式,可以帮助企业更好地与客户进行沟通,提高客户满意度…

    科研百科 2025年1月2日
    0
  • 【项目精选】366期:土木建筑技术项目推荐(土木建筑工程技术专业)

    项目一:大型屋盖及围护体系抗风防灾理论、关键技术和工程应用 项目简介: 本项目在大型屋盖风致作用机理、风效应分析理论、设计风荷载确定方法和屋面系统抗风的技术措施、检测评价方法等方面…

    科研百科 2024年4月5日
    102
  • 杨元庆:新财年要加强内部管控,降本增效

    新京报讯(记者 许诺)4月14日,联想集团在线上举办了2020/21财年誓师大会。誓师大会上,杨元庆表示,面对充满不确定性的经济展望,联想集团要做最艰苦的准备,尽最大的努力。公司要…

    科研百科 2024年2月11日
    121
  • 国家开发投资集团有限公司科技与数字化部

    国家开发投资集团有限公司科技与数字化部:引领数字化发展,赋能企业创新 国家开发投资集团有限公司(简称“国投集团”)科技与数字化部作为国投集团的核心部门之一,一直致力于推动数字化技术…

    科研百科 2024年10月29日
    5
  • crm渠道管理软件

    crm渠道管理软件:助力企业渠道管理优化 随着市场竞争的加剧,企业需要更好地管理其渠道,以确保产品和服务能够更好地满足客户需求。crm渠道管理软件是一种能够帮助企业实现渠道管理优化…

    科研百科 2024年9月15日
    23
  • 邵阳市交通运输局:突出五大重点落实包保机制 全面排查治理安全隐患

    红网时刻新闻9月26日讯(通讯员 禹志初 李慧兰)“各组要重点检查普货车辆右侧盲区监控安装情况,看是否按要求安装,有无一车一档资料,有无虚报情况!”9月24日,邵阳市交通运输局隐患…

    科研百科 2022年10月6日
    210