最近几天一直在用swing写TTMS的界面层,以前从没用过Swing图像库,所以也算是边学边用把,下面记录一些注意的地方。
JFrame JPanel区别
形象的说,JFrame相当于桌子,JPanel相当于桌布。一个桌子上可以放很多桌布。所以一个JFrame可以add很多个JPanel。而其他的JButton,JLabel之类就相当是桌子上的水杯烟灰缸之类的了。
布局管理器及一些坑
首先,按照标准的写法来,我们至少会给桌子上铺一个桌布,再摆放水杯。而桌布有很多的摆放水杯的方案,最简单的是null(时间关系不能学习其他复杂的布局),由于它完全按你指定的位置来摆放,固然有很多的不足,最明显的就是对窗口进行大小的修改(如最大化),部件的大小不会随之改变,甚至有可能消失(如你在最右边放了一个按钮,用户将窗口变小这个按钮因为跑到窗口外面去了,所以就看不到了。那么我们的解决方案就是把窗口设置成不能改变大小。
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setSize(400,300);//窗口大小400*300
frame.setResizable(false); //设置大小不可变
frame.setTitle("标题");
frame.setLocationRelativeTo(null);窗口居中
panel.setLayout(null);//无布局
frame.add(panel);
frame.setVisible(true);//这句一定要放在添加完所有部件的后边,否则可能有些部件不能立即显示
一个桌子铺上多个桌