GUI编程
一、概念
1.GUI的概念
-
基于控制台的程序
-
GUI(Graphical User Interface)即图形用户界面,它能够使应用程
序看上去更加友好
2.Swing概述
-
使应用程序在不同的平台上运行时具有相同外观和相同的行为
-
大部分组件类位于javax.swing包中
-
Swing中的组件非常丰富,支持很多功能强大的组件
二、 容器
1.容器组件
-
组件是一个以图形化的方式显示在屏幕上并能与用户进行交互的对象
-
组件不能独立地显示出来(必须放在一定的容器中)
-
容器可以容纳多个组件(通过调用add方法添加组件)
窗口(Frame)和面板(Panel)是最常用的两个容器
2.常用容器
a.JFrame
JFrame用于在Swing程序中创建窗体
public class FrameDemo extends JFrame {
public void jf(){
this.setTitle("聊天窗口");
//this.setLocation(100, 100);//设置位置
//this.setBounds(300,200, 500, 500);//设置位置及大小
this.setSize(500, 500);//设置大小
this.setResizable(true);//是否可以改变窗口大小
this.setLocationRelativeTo(null);//居中
this.setIconImage(new ImageIcon("1.jpg").getImage());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出即停止运行
this.setVisible(true);//显示窗口
}
public static void main(String[] args) {
new FrameDemo().jf();
}
}
b.Jpanel
-
JPanel提供面板,它是轻量级的容器
-
面板中可以添加其它组件,也可以设置布局,使用面板来实现布局嵌套
public class FrameDemo1 extends JFrame {
public void jf(){
this.setTitle("聊天窗口");
//this.setLocation(100, 100);//设置位置
//this.setBounds(300,200, 500, 500);//设置位置及大小
this.setSize(500, 500);//设置大小
this.setResizable(true);//是否可以改变窗口大小
this.setLocationRelativeTo(null);//居中
this.setIconImage(new ImageIcon("1.png").getImage());//添加图片控件
JPanel jp = new JPanel();//新建面板
this.add(jp);
jp.setBackground(Color.cyan);//设置面板的背景色
JButton jb = new JButton("游戏结束");//添加按钮
jp.add(jb);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出即停止运行
this.setVisible(true);//显示窗口
}
public static void main(String[] args) {
new FrameDemo1().jf();
}
}
-
框架内部包含一个名叫Container(内容面板)的面板容器,可以给框架中添加图形控件
-
通过JFrame类中的getContentPane()方法即可获得此框架的内容面板
-
可以创建Jpanel面板对象,把JPanel作为一个组件添加到某个容器中
三、布局管理器
当容器需要对某个组件进行定位或判断其大小尺寸时,调用Jpanel的setLayout方法改变其布局管理器对象或通过构造方法设置。
Java中有几种常用的布局管理器,分别是:FlowLayout , BorderLayout, GridLayout。
1.FlowLayout(流式布局)
-
FlowLayout布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排,并在默认情况下使组件尽量居中放置。
-
FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。
-
不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式。
/*
流式布局
*/
public class FrameDemo5 extends JFrame {
public void jf(){
this.setTitle("聊天窗口");
//this.setLocation(100, 100);//设置位置
//this.setBounds(300,200, 500, 500);//设置位置及大小
this.setSize(500, 500);//设置大小
this.setResizable(true);//是否可以改变窗口大小
this.setLocationRelativeTo(null);//居中
this.setIconImage(new ImageIcon("1.png").getImage());
//在窗口中添加面板
JPanel jp = new JPanel();
jp.setBackground(Color.cyan)