JavaSE中最好玩的一类API应该是GUI相关的了;不同于其他Java类最多通过打印输出看到效果,GUI是可以直接看到图形,这是多么愉快的事情;
而且竹迩经常说,GUI是高度体现了面向对象的拿来主义;hello,你过来,站这里;那个谁谁谁过来,站这里;通过这些所有的谁谁谁,就拼成了一个完整的界面;
那这中间主要涉及到的类有两种:组件和布局
比如像下面这样:
Jframe,你过来,这是一个组件,这个组件就是一个底板的存在;不需要你去了解底板如何产生,只需要互换Jframe的名字,它所代表的对象就是一个底板;
按钮,你过来,这也是一个组件,这个组件就是一个按钮的存在;
按钮放在组件的这个位置吧,这是一个布局的存在;
所以作为GUI编程其实分为三步曲:
把组件拿出来:就是Java已经提供好的对象
设置组件的位置:也有布局对象能够来帮你做摆放
将组件拼接完成显示出来:add,拼图完成
//底板你过来
JFrame frame = new JFrame();
frame.setSize(500,500);
//按钮你过来
JButton btn = new JButton("按钮");
//布局来帮我摆放
frame.setLayout(new BorderLayout());
//将按钮放在底板上,让布局对象帮忙放在中间
frame.add(btn,BorderLayout.CENTER);
//显示
frame.setVisible(true);
以上面的实现为例,我们来看看代码如何实现;
作为拼图,也是可以有几层的,比如如下图,面板A上放置面板B,面板B上再放置三个按钮;过程也是完全分为三部曲:
创建组件对象
设置布局方式
将组件放上去
来看看代码实现,
//面板A你过来
JFrame frame = new JFrame();
frame.setSize(500,500);
//面板B你过来
JPanel panel = new JPanel();
//三个按钮你过来
JButton btn1 = new JButton("按钮1");
JButton btn2 = new JButton("按钮2");
JButton btn3 = new JButton("按钮3");
//布局来帮我摆放
frame.setLayout(new BorderLayout());
//将面板B放在面板A上,布局对象帮我放中间
frame.add(panel,BorderLayout.CENTER);
//面板B也要叫布局对象起来帮忙放置按钮
panel.setLayout(new BorderLayout());
panel.add(btn1,BorderLayout.EAST);
panel.add(btn2,BorderLayout.NORTH);
panel.add(btn3,BorderLayout.CENTER);
//显示
frame.setVisible(true);
只是代码最终实现的效果有点差别,这就涉及到要灵活应用布局对象了;