老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) {
        //实例化 JFrame
        JFrame 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基础好了学习很容易。

 

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

欢迎大家留言一起讨论!

 

 

评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程界小明哥

请博主喝瓶水,博主持续输出!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值