窗口设计——Frame组件
1、创建一个窗口——Frame(窗体),创建该对象即可
2、使用setSize设置窗体大小
3、frame.setVisible(true)——默认窗体不可见,所以需要用true使窗体展现出来
setLocation()——调整窗口的位置
setResizabile(),设置窗口大小是否固定
setAlwaysOnTop——设置窗口是否始终展现在最前面
setBounds()——设置位置和大小
setCursor——设置个性化光标
监听器
我们可以为窗口添加一系列的监听器,监听器会监听窗口中发生的一些事件。当发生对应的事件时,就会通知对应的监听器进行处理,从而我们能够在发生对应事件时进行处理。
由于这个监听器的接口里面有很多方法用不到,所以可以考虑使用适配器。
适配器模式?
常用组件介绍
awt不是在主线程展示的,改变主线程后对awt图形化界面没有影响。
开始学习组件之前,先把布局设定为null(因为默认情况下会采用BorderLayout作为布局)先介绍没有布局的情况下如何使用这些组件。
设置标签:
Label label = new Label();添加一个标签只需要创建一个对象即可。
label.setLocation()设定位置和大小。
frame.add(label);//使用add当打添加到组件到窗口。
组件的位置是以整个窗口的左上角为原点开始的!如果想设置组件的位置,还需要注意加上标题栏的高度,否则会被标题遮挡。
可以自由设置组件的文本,字体!
如果 窗口里有很多个字体,那么可以直接对窗口设定字体。
设置文本颜色——setForeground
设置按钮:
Button button = new Button();
button.addActionListener()——给按钮添加功能(按钮被点击)
TextField——文本框
点击按钮获取文本框里的内容:
public class Main {
public static void main(String[] args) {
Frame frame = new Frame("Hello");
frame.setBounds(500,500,500,300);
frame.setAlwaysOnTop(true);
frame.setLayout(null);
TextField field = new TextField();
field.setBounds(20,100,200,50);
frame.add(field);
Button button = new Button();
button.setBounds(20,50,100,50);
frame.add(button);
button.addActionListener(e -> {
String text = field.getText();
System.out.println("");
});
frame.add(button);
}
}
如果设置密码使用setEchoChar("*")
创建勾选框——CheckboxGroup——组件形状变成圆形
布局
希望窗口放大的时候,组件自动适配窗口。
布局可以根据自己的一些性质,对组件进行调整,包括位置和大小,下面学习布局管理器
边界布局
按照这五个位置进行布局:
流式布局
按照顺序排列的一种布局,采用流式布局后,按钮会根据内容大小,自动调整为对应的大小,并且他们之间是有间距的。
卡片布局
就像很多卡片叠在一起,每次只能看到最顶上的这张卡片,但是我们可以把下层的卡片切到顶上去。
网格包布局(GridBagLayout)
面板与布局的嵌套使用
窗口只能设定一个布局,所以实现上有些麻烦。
这时候引入新的容器——面板(存放其他组件的组件,“套娃”)
面板默认采用
FlowLayout()