文前声明
我是一个练习时长4个月的java练习生
完全没有任何资格写java教程
这篇推送仅仅是因为
这个学期的java在GUI方面讲得过于差
所以我从头到尾都是依靠google
但其实也没有找到特别详尽的手把手GUI教程
所以谨以此文记录一下我的心路历程
更偏向于个人笔记而不是学术交流
(在此推荐易百教程的常规java教学
https://www.yiibai.com/java/
它拯救了我的前半个学期)
所以,如果你是大佬,真的真的不要继续看下去了
也卑微地欢迎大家来debug
JFrame00
用java实现GUI相关功能主要有javax.swing和java.awt两种方法,具体可以自行google。
JFrame 用于创建一个界面的最外部框架,也就是Fig. 2显示出来的部分。它也是一个class,所以按照Fig. 1. line 6的方法创建。
Fig. 1. JFrame code
jf.setTitle
就是set title的过程,这个名字会显示在JFrame的最上部,也就是在Fig. 2里"Setting JFrame"的位置。
jf.setSize
用来规定JFrame尺寸,第一项是width,第二项是height。这里的200我觉得应该是像素,如果不是的话我不负责。另外还有jf.setPreferredSize, jf.setMinimumSize, jf.setMaximumSize, 详见
https://alvinalexander.com/java/java-set-jframe-size/
jf.setLocationRelativeTo(null)
用于把JFrame设置在屏幕正中间。关于屏幕的位置坐标系可以看
https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html
里面的第一张图。
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
用于在摁下JFrame上的关闭键时使整个GUI界面终止。所以这个很必要。
jf.setVisible(true)
用于显示JFrame。有的时候,比如需要实现“先在登录框登录成功,再显示内容框”的功能时,就需要在setVisible(true)和setVisible(false)之间转换。
JFrame设置成功的界面如Fig. 2.
Fig. 2. Setting JFrame
JPanel01
JPanel 是最简单的container class,个人的理解它的作用是为其它组件提供一个空白底板,让其它组件添加到JPanel上。而JPanel可以添加到JFrame上。
Fig. 3. JPanel code
增加的代码在line 11和line 12。其实此时界面看不出任何差别,看起来与Fig. 2时是一样的。
JButton02
JButton 用于提供可以跟用户产生交互的按钮,也就是JButton可以对用户的点击作出反应。
Fig. 4. JButton code
Fig. 4. line 14括号中的"Button 1"是该button的显示名字,会出现在button上面,如Fig. 5. (暂时JButton还不具备“对点击作出具体反应”的功能)
Fig. 5. Adding JButton
此时就可以顺便显示一下JPanel的妙用了。如果删除添加JPanel的语句,把JButton直接添加到JFrame上 (如Fig. 6. line 16-17),JButton会默认占据整个JFrame,并且连续添加两个JButton会导致Button 2覆盖Button 1,如Fig. 7.
(从Fig. 6也可以看到,如果只新建某组件(这里的jp),但并未add的话,是不会显示出来的)
Fig. 6. JButton without JPanel code
Fig. 7. Adding JButton without JPanel
JLabel03
JLabel 用于显示一段字符串或图案,它与JButton最主要的区别就是,JLabel无法对鼠标行为作出回应,只是起到display的作用。
Fig. 8. JLabel code
JLabel.setText
用于设置JLabel要显示的内容,比如这里是两段字符串,"This is the first label text" 和 "This is the second label text".
Fig. 9. Adding JLabel
快乐的时光总是短暂的。基础的JComponent其实就差不多了,这个系列的下一次更新大概要很久以后了~
END