《化羽Java GUI学习笔记》 我自己的学习笔记以后方便复习,也希望可以给找不到方法学习的人一点点帮助。如果有错误请大家告诉一下相互学习。
布局
容器中包含了组件,组件的布局(包括位置和大小)通常由布局管理器(LayoutManager)负责安排。每个容器——例如JPanel或者顶层容器的内容窗格——都由一个默认的布局管理器,Java程序的开发者可以通过容器的setLayout()方法改变容器的布局管理器。
一个简单的例子:
import java.awt.*;
import javax.swing.*;
public class ExGui {
private JFrame frame;
private JButton b1;
private JButton b2;
public static void main(String[] args) {
ExGui that = new ExGui();
that.go();
}
public void go() {
frame = new JFrame("GUI example");
Container contentPane = frame.getContentPane(); //获得内容窗格
//为内容窗格设置FlowLayout布局管理器
contentPane.setLayout(new FlowLayout());
b1 = new JButton("Press me"); //创建Button 实例
b2 = new JButton("Don't press Me");
contentPane.add(b1); //添加按钮
contentPane.add(b2);
frame.pack();
frame.setVisible(true);
}
}
程序中的主要内容:
1.main()方法
这里main()方法有两个作用。首先,它创建了一个ExGui类的实例,在这个实例创建之前,并没有实际可用的b1,b2数据项。其次,当ExGui类的实例创建好以后,main()又调用了该实例的go()方法在这个方法中,程序的实际功能得以实现。
2.frame.getContentPane()
这条语句获取JFrame实例默认的内容,此后可以修改它的布局管理器,并添加组件
3.contentPane.setLayout(new FlowLayout())
建立了一个FlowLayout型的布局管理器,并通过调用setLayout()方法将该布局管理器指定给前面已经 获得JFrame实例的默认内容窗格。 因为默认的BorderLayout型布局不能满足要求,所以有这种类型。
4.frame.pack()
通知框架frame设定一个适当的大小,以便能够以“紧缩”的形式包容各个组件。
5.frame.setVisible(true)
使框架frame以及它所包含的组件对用户可见,在此之前,框架和组件虽然已经创建好了,但是并没有显示出来,只有调用了setVisible(true)方法后,他们才变为可见。