老Java程序员谈谈Swing要不要学

老java程序员谈谈要不要学swing

Swing是什么?

1)AWT

在早期JDK1.0发布时,Sun公司就为GUI开发提供了一套基础类库,这套类库被称为AWT(Abstract Window Toolkit),即抽象窗口工具包。AWT的起初设想就是为了统一实现不同操作系统的图像界面,但问题是,不同操作系统图形库的功能可能不一样(比如按钮,在不同系统的就表现不一样),在一个平台上存在的功能在另外一个平台上则可能不存在,为此AWT不得不通过牺牲功能来实现平台无关性。不仅如此,AWT还是一个重量级组件,使用比较麻烦,且设计出的图形界面不够美观功能也非常有限。为此,Sun公司对AWT进行改进,提出了Swing组件,提供了更加丰富的组件和功能,来满足GUI设计的一切需求。

2)Swing

Swing是一个用于开发Java应用程序用户界面的开发工具包。使用 Swing 来开发图形界面比 AWT 更加优秀,因为 Swing 是一种轻量级组件,它采用纯 Java 实现,不再依赖于本地平台的图形界面,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色。除此之外,Swing 提供了比 AWT 更多的图形界面组件,Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

为了和 AWT 组件区分,Swing 组件在javax.swing.*包下,类名均以 J 开头,例如: JFrame、JLabel、JButton等,而在AWT中叫Frame、Label等。

Swing能够干什么?

1)做系统,比如医院的软件。

2)做各种小游戏,提升逼格。

3)Intellij IDEA就是java swing开发的

4)毕业设计用的挺多。

Swing容器

Swing 中容器可以分为两类:顶层容器和中间容器,容器类都是继承自 Container 类。

顶层容器:

是进行图形编程的基础,一切图形化的东西都必须包括在顶层容器中。Swing中有三种顶层容器,分别是JFrame、JDialog 和 JApplet。

中间容器:

是容器组件的一种,也可以承载其他组件,但中间容器不能独立显示,必须依附于其他的顶层容器。常见的中间容器有 JPanel、JScrollPane、JTabbedPane 和 JToolBar。

Swing布局

1)FlowLayout(流式布局)

流式布局管理器:按水平方向依次排列放置组件,排满一行,换下一行继续排列。

2)GridLayout(网格布局)

网格布局管理器:按指定行列数分隔出若干网格,每一个网格按顺序放置一个控件。

3)GridBagLayout(网格袋布局)

网格袋布局管理器:每个组件可占用一个或多个网格,可将组件垂直、水平或沿它们的基线对齐。

4)BoxLayout(箱式布局)

箱式布局管理器:它把若干组件按水平或垂直方向依次排列放置。

5)GroupLayout(分组布局)

分组布局管理器:将组件按层次分组(串行 或 并行),分别确定 组件组 在 水平 和 垂直 方向上的位置。

6)CardLayout(卡片布局)

卡片布局管理器:它将容器中的每个组件看作一张卡片,一次只能看到一张卡片,其他卡片被遮住。

7)BorderLayout(边界布局)

边界布局管理器:它把 Container 按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。

8)SpringLayout(弹性布局)

弹性布局管理器:通过定义组件四条边的坐标位置来实现布局。

9)null(空布局)

空布局:也叫绝对布局,通过设置组件的坐标和宽高来布置组件。

看起来有很多是不是很吓人,其实不然,我们主要掌握以下4种

1、边界布局(BorderLayout)

2、流式布局(FlowLayout)

3、网格布局(GridLayout)

4、null(空布局)

Swing常用组件

组件名称 定义
JButton 按钮,可以设置背景图片或文字
JCheckBox 复选框组件
JComboBox 下拉列表框,可以在下拉显示区域显示多个选项
JFrame 框架类
JDialog 对话框
JLabel 标签组件
JRadioButton 选按钮
JList 代表能够在用户界面中显示一系列条目的组件
JTextField 文本框
JPasswordField 密码框
JTextArea 文本区域
JOptionPane 对话框

如何创建Swing窗体程序

1.实例化JFrame对象,也就是创建一个窗体。

2.设置窗体的相关属性。

3.获取一个容器。

4.创建组件。

5.向容器添加组件。

6.使窗体可视。

import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
​
public class SwingLearn {public static void main(String[] args) {//实例化 JFrameJFrame frame = new  JFrame();//设置相关属性frame.setTitle("Swing学习");//标题frame.setSize(300,300);//窗体大小frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮是关闭程序frame.setLocationRelativeTo(null);   //设置居中frame.setResizable(false); //不允许修改界面大小//获取容器Container container = frame.getContentPane();frame.setLayout(null);//创建按钮JButton jButton = new JButton("我是按钮");jButton.setBounds(100, 100, 100, 40);//按钮添加到容器中container.add(jButton);//设置显示frame.setVisible(true);}
​
}

Swing为什么发展不好?

1)运行Swing程序,用户的电脑上必须有java运行环境,这个不太现实也很不方便。

2)本身用Swing开发出来的客户端本身比较大,客户端也需安装到用户的电脑上。

3)如果遇到不同的操作系统,需要为不同的操作系统开发一套客户端。

4)B/S系统的强势崛起,因为B/S架构多用WEB网页进行开发,不需要安装客户端,在浏览器上打开,一旦代码发生变更,客户端不需要进行升级。

swing要不要学?

1)java初学者和学校学生

初学Java的同学可能会觉得敲代码比较枯燥无味,自己辛苦写的代码却只能在控制台打印出来,感受不到交互、没有用户体验,Swing刚好解决了这一问题。

有人可能要说,现在web方向那么火,直接学web不就行了,其实web也有很多东西要学,对编程初学者来说接受那么多的语言太不友好,也很困难,比如:jsp、html、JavaScript、css甚至 node.js、vue.js,初学者如果这么做,等于入门即地狱。

学习Swing需要花很多时间和精力吗?答案不需要

1)Swing是基于java语法,学了java使用它就没有什么门槛,也不需要过渡,并没有要学习接触新的语言。

2)学习常用布局、常用的组件、常用的容器。这些都相对比较固定,上手容易。

3)绘图的学习,绘制也相对比较简单,学会可以做很多小游戏,装逼利器。

学习swing能带来什么?

1)学习java不再是简单无趣的System.out....,用swing有用户体验,提升成就感、信心。

2)如果是做小游戏,能够很好练习线程的使用、业务逻辑的处理。

3)布局,常用的组件等,对于以后学习web也是有一定帮助的,因为它们有着类似的设计思想。

4)绘图的语法与JavaScript canvas语法也是非常的接近,学会了swing绘图,何愁canvas不会?

5)Swing本身就是非常优秀的,通过使用可以学习它的设计思想。

2)有相对较好java基础

不建议学,除非有特殊要求(开发需要、自己爱好、装逼用)

还是多学习框架,比如Struts、spring、springboot、Hibernate,考虑前端的话框架 node.js、 vue.js等。

Swing必要的时候,可以自己再去研究一下,java基础好了学习很容易。

看到这里的大佬,动动发财的小手点赞 + 回复 + 收藏 ,能关注一波就更好了。

欢迎大家留言一起讨论!

老Java程序员谈谈swing要不要学相关推荐

  1. 老java程序员告诉你要不要选择外包,外包公司的好处你知道吗

    给一些即将进入java行业就业的大学生或者是转行人员一些建议,找工作时是找工资高的外包公司还是工资低的小公司,外包公司的好处你知道吗,本人在b站录制的小视频,你想要的答案全在里面,更多精彩欢迎关注我. ...

  2. Java程序员用下班时间给学弟做了一个在线考试系统

    文章目录 前言 一.框架介绍 1.1.Spring 1.2.SpringMVC 1.3.MyBatis 1.4.SSM整合 二.开发环境 三.系统功能 3.1 考试界面登陆 3.2 选择试题 3.3 ...

  3. 一个java程序员的真实经历

    半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业.回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作 ...

  4. Kotlin 喧嚣过后,Java 程序员未来在哪里

    自从谷歌 I/O 2017宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言,各种 Kotlin 能否取代 Java 的文章.争论层出不穷. 作为一名老 Java 程 ...

  5. java技术栈有哪些_2020 年 Java 程序员应该学习掌握哪些技术?

    原文:2020 年 Java 程序员应该学习掌握哪些技术? 作者:java技术剑 作为一名程序员,我们面临的最大挑战是使自己保持不断学习的状态.技术变化非常快,每两年你就会看到新版本的编程语言和框架. ...

  6. 转载一篇不错的文章:谈谈“野生”Java程序员学习的道路

    逛论坛看到的一篇不错的文章,特此转载:本文转载自:左潇龙  原文链接:点击打开链接 引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想 ...

  7. 谈谈Java程序员进阶的那些知识和方向

    谈谈Java程序员进阶的那些知识和方向 记得前段时间看过一篇文章谈到一种程序员叫野生程序员,战斗力极强,可以搞定一切问题,但是通常看问题抓不到本质,或者说是google/baidu/stackover ...

  8. Java程序员已经饱和了?这是个老话题了

    这个是老话题了,Java程序员远远没有饱和,年薪10万+是很正常的一个薪酬水平.现在Java程序员挺多的,但是职位需求量更大,特别是能干实干或优秀的程序员是相当缺乏的,没存在饱和一说. 从经验来说,如 ...

  9. Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路

    http://blog.jobbole.com/111422 Java 生态圈 Java 的生态环境开放.自由,在Sun/Oracle.Google.Apache.Eclipse基金会等各大厂商,还有 ...

最新文章

  1. Windows性能分析器概述(一)
  2. hdu-You can Solve a Geometry Problem too
  3. python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)
  4. 汽车产业云上多地域高可用消息系统构建
  5. Java Protected 解读
  6. CSS 单词间距 word-spacing属性
  7. PAPI性能测试工具的安装、使用及实例
  8. Exp4恶意软件分析 20154326杨茜
  9. iOS NSURLSession
  10. python窗口怎么显示,如何使用Python在没有窗口的屏幕上显示文本
  11. intelx79服务器芯片组,Intel X79 高速芯片组是什么
  12. matlab中测交流电压,间接测量交流电压有效值的方法与应用
  13. mysql期末作业_MySql期中作业
  14. python使用worldcloud模块、jieba模块做QQ消息记录词云
  15. [Unity插件]物体轮廓特效HighlightPlus
  16. Win10微信查看图片卡顿或发送图片卡顿的原因和解决方法
  17. 地址总线、数据总线和控制总线简述
  18. 使用CSS画出漂亮的弧线
  19. 离子液体N-丙基-吡啶二氰胺盐[C3py][DCA]|N-丙基-吡啶二氰胺[C3py][DCA]|齐岳
  20. java调用qt生成的dll_在Qt中调用vs2008生成的dll以及lib的方法

热门文章

  1. Windows DNS服务器的子网掩码排序
  2. 第58章 热力学、热量和你
  3. TokenGazer:DeFi领域发展良好,量化模型显示MKR处于市值偏低区间
  4. 如何修改PDF文件内容,PDF怎么编辑页眉页脚
  5. python 等值线图_如何用Python绘出三值等值线图?
  6. 微信和支付宝相关支付业务场景介绍
  7. Mac卸载jdk和java
  8. Docker测试环境笔记
  9. 好心情精神心理科医生:如何与青春期的孩子沟通?
  10. Materials - 角色分层材质规范