目录
要实现Java的图形化界面,要用到AWT和SWING这两个包,但是在学习GUI之前,先要有这些知识:布局管理器和事件监听器
布局管理器Layout
在JavaGUI中,为了方便coder管理布局,于是封装了一个叫做布局管理器的东西,可以帮助编程者进行自动布局,下面给出最常见的两种
1. 流式布局器 FlowLayout
流式布局器顾名思义,是按照顺序进行布局,例如在一个内容面板中添加按键,每次添加都在前一个的后面,如果这一行放不下了就放到下一行中,默认每行的第一个放在中间,也可以设置为左或右
2. 边界布局器 BorderLayout
Java将一个窗体分成五部分,分别为上、下、左、中、右,参见下图
使用边界布局器可以设置你的内容在这些中的位置
当然也可以不使用边界布局器,纯用绝对位置来放置组件
jf.setLayout(null);
事件监听器
要组建一个图形化界面并且具有一定功能,需要监听鼠标、窗体等事件,因此在学习GUI前,要先有事件和事件监听器的知识,但是这不是这篇文章的重点,因此这里给出一篇我认为写的很好的文章
Java GUI
JFrame
要有一个图形化界面首先得有一个窗体,用于显示内容,在Swing中给出了JFrame作为一个窗体,可以向其中添加内容来显示
新建一个JFrame类jf,命名为test,可以设置大小、位置、布局器(下一个会提)、默认关闭方式等,其中JFrame的默认布局管理器为BorderLayout
//创建窗口 默认BorderLayout
JFrame jf = new JFrame("test");
jf.setSize(1600,1000);
jf.setLocationRelativeTo(null);
jf.setLayout(null);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
虽然可以将一些组件直接添加到窗体中,但是这样就少了很多灵活性,因此Java提供了一种内容面板 JPanel,它被用来存放组件,然后再将JPanel添加到窗体上显示出来
JPanel
与JFrame一样,JPanel也可以设置布局管理器,默认为FlowLayout,如果将其改为null,就可以设置它相对于窗体的位置和大小
JPanel panel=new Original_Image_Panel(im_info);
panel.setLayout(null);
panel.setBounds(50,50,600,600);
有了内容面板JPanel,就可以向其中添加一些需要的组件,比如按钮、文本框等,这里我详细讲一下按钮组件 JButton
JButton
JButton是一个按钮组件,创建如下:
JButton button = new JButton("button");
可以为其添加事件监听器,比如鼠标事件监听器,它就可以响应鼠标的点击了
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("click");
}
});
与前面提到的组件一样,所有的组件都可以设置大小和位置
现在有了按钮组件,内容面板和窗体,就可以进行组装了
组装过程
1. 首先将组件添加到内容面板中
注意:如果内容面板的布局管理器是null,则需要用setBounds来规定组件的大小和相对于内容面板左上角的位置;如果使用了布局管理器,则不用担心这个,设置了也没用,布局管理器会帮你做好一切的排版工作!
panel.add(button);
同一个内容面板可以添加多个组件,也可以嵌套添加内容面板,以实现更多样化的布局
2. 将设计好的内容面板添加到窗体
同样的,需要关注窗体布局管理器的设置!
jf.getContentPane().add(panel,BorderLayout.SOUTH);
这里用到了getContentPane然后再add,这是Java的标准添加到窗口的方法
显示窗体
这是很重要的一点,在设计完你的布局和组件之后,一定要将窗体设为可视!
jf.setVisible(true);
现在,就可以将之前设计的窗体显示出来啦