老Java程序员谈谈swing要不要学
老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要不要学相关推荐
- 老java程序员告诉你要不要选择外包,外包公司的好处你知道吗
给一些即将进入java行业就业的大学生或者是转行人员一些建议,找工作时是找工资高的外包公司还是工资低的小公司,外包公司的好处你知道吗,本人在b站录制的小视频,你想要的答案全在里面,更多精彩欢迎关注我. ...
- Java程序员用下班时间给学弟做了一个在线考试系统
文章目录 前言 一.框架介绍 1.1.Spring 1.2.SpringMVC 1.3.MyBatis 1.4.SSM整合 二.开发环境 三.系统功能 3.1 考试界面登陆 3.2 选择试题 3.3 ...
- 一个java程序员的真实经历
半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业.回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作 ...
- Kotlin 喧嚣过后,Java 程序员未来在哪里
自从谷歌 I/O 2017宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言,各种 Kotlin 能否取代 Java 的文章.争论层出不穷. 作为一名老 Java 程 ...
- java技术栈有哪些_2020 年 Java 程序员应该学习掌握哪些技术?
原文:2020 年 Java 程序员应该学习掌握哪些技术? 作者:java技术剑 作为一名程序员,我们面临的最大挑战是使自己保持不断学习的状态.技术变化非常快,每两年你就会看到新版本的编程语言和框架. ...
- 转载一篇不错的文章:谈谈“野生”Java程序员学习的道路
逛论坛看到的一篇不错的文章,特此转载:本文转载自:左潇龙 原文链接:点击打开链接 引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想 ...
- 谈谈Java程序员进阶的那些知识和方向
谈谈Java程序员进阶的那些知识和方向 记得前段时间看过一篇文章谈到一种程序员叫野生程序员,战斗力极强,可以搞定一切问题,但是通常看问题抓不到本质,或者说是google/baidu/stackover ...
- Java程序员已经饱和了?这是个老话题了
这个是老话题了,Java程序员远远没有饱和,年薪10万+是很正常的一个薪酬水平.现在Java程序员挺多的,但是职位需求量更大,特别是能干实干或优秀的程序员是相当缺乏的,没存在饱和一说. 从经验来说,如 ...
- Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路
http://blog.jobbole.com/111422 Java 生态圈 Java 的生态环境开放.自由,在Sun/Oracle.Google.Apache.Eclipse基金会等各大厂商,还有 ...
最新文章
- Windows性能分析器概述(一)
- hdu-You can Solve a Geometry Problem too
- python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)
- 汽车产业云上多地域高可用消息系统构建
- Java Protected 解读
- CSS 单词间距 word-spacing属性
- PAPI性能测试工具的安装、使用及实例
- Exp4恶意软件分析 20154326杨茜
- iOS NSURLSession
- python窗口怎么显示,如何使用Python在没有窗口的屏幕上显示文本
- intelx79服务器芯片组,Intel X79 高速芯片组是什么
- matlab中测交流电压,间接测量交流电压有效值的方法与应用
- mysql期末作业_MySql期中作业
- python使用worldcloud模块、jieba模块做QQ消息记录词云
- [Unity插件]物体轮廓特效HighlightPlus
- Win10微信查看图片卡顿或发送图片卡顿的原因和解决方法
- 地址总线、数据总线和控制总线简述
- 使用CSS画出漂亮的弧线
- 离子液体N-丙基-吡啶二氰胺盐[C3py][DCA]|N-丙基-吡啶二氰胺[C3py][DCA]|齐岳
- java调用qt生成的dll_在Qt中调用vs2008生成的dll以及lib的方法