import javax.swing.*;
// 必须继承JFrame类
public class Demo22 extends JFrame {
public Demo22() {
// 调用父类构造方法,并指定窗口标题
super("无界软件");
// 设置窗口大小,单位为像素
this.setSize(400, 300);
// 设置窗口左上角坐标
this.setLocation(200, 100);
// // 设置窗体边界,完全确定窗体的大小和位置
// this.setBounds(200,100,400,300);
// 设置窗口关闭方式为退出应用程序
// 结束窗体所在的应用程序
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// // 不做任何事情
// this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// // 隐藏当前窗口
// this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
// // 隐藏当前窗口,并释放窗体占有的其它资源
// this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 设置窗口可见
this.setVisible(true);
// 设置窗口是否可调大小,默认可调
this.setResizable(true);
}
public static void main(String[] args) {
// 实例化一个对象
new Demo22();
}
}
面板不能独立存在,必须被添加到其他容器内部
面板可以嵌套,由此可以设计出复杂的图形用户界面
import javax.swing.*;
import java.awt.*;
public class Demo23 extends JFrame {
// 声明一个面板对象
private JPanel panel;
// 声明两个按钮对象
private JButton button1,button2;
public Demo23(){
super("面板Demo");
// 实例化面板对象,默认流式布局
panel = new JPanel();
// 实例化一个按钮对象,该按钮上文本为“确认”
button1 = new JButton("确认");
button2 = new JButton("取消");
// 将按钮添加添加到面板中
panel.add(button1);
panel.add(button2);
// 将面板添加到窗体中
this.add(panel);
// 设置窗口大小
this.setSize(400,300);
// 设置窗口位置
this.setLocation(200,100);
// 设置默认关闭模式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口可见
this.setVisible(true);
}
public static void main(String[] args) {
new Demo23();
}
}
JScrollPane类的对象中放置的组件可以任意大,通过滚动条来观察整个组件
// 声明一个滚动面板
private JScrollPane panel;
public Demo23(){
// 实例化一个滚动面板对象
panel = new JScrollPane();
}
ØJSplitPane类的对象被称为拆分窗格。
public JSplitPane(int a,view1,view2)
// 其中,a为拆分方式,可以取值为
// JSplitPane.HORIZONTAL_SPLIT
// JSplitPane.VERTICAL_SPLIT
// view1和view2是组件
setDividerLocation(double position)
// 设置拆分线的位置
// 创建面板
panel = new JPanel();
// 创建一个流式布局对象,左对齐,水平间距10,垂直间距15
FlowLayout layout = new FlowLayout(FlowLayout.LEFT,10,15);
// 设置面布局
panel.setLayout(layout);
panel = new JPanel(new FlowLayout(FlowLayout.LEFT,10,15));
import javax.swing.*;
import java.awt.*;
public class Demo24 extends JFrame {
private JPanel jPanel;
private JButton jButton1, jButton2, jButton3, jButton4, jButton5;
public Demo24() {
super("边界布局");
jPanel = new JPanel();
// 创建一个边界管理布局对象,并将该布局放置在面板中
jPanel.setLayout(new BorderLayout());
// 创建按钮
jButton1 = new JButton("按钮1");
jButton2 = new JButton("按钮2");
jButton3 = new JButton("按钮3");
jButton4 = new JButton("按钮4");
jButton5 = new JButton("按钮5");
// 将按钮放置到指定位置
jPanel.add(jButton1, BorderLayout.EAST);
jPanel.add(jButton2, BorderLayout.WEST);
jPanel.add(jButton3, BorderLayout.SOUTH);
jPanel.add(jButton4, BorderLayout.NORTH);
jPanel.add(jButton5, BorderLayout.CENTER);
// 将面板添加到窗体中
this.add(jPanel);
// 设置位置和大小
this.setBounds(200, 100, 300, 200);
// 设置关闭模式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置可见
this.setVisible(true);
}
public static void main(String[] args) {
new Demo24();
}
}
public GridLayout()
// 创建一个只有一行的网格,网格的列数根据实际需要而定
public GridLayout(int rows, int cols)
// rows和cols两个参数分别指定网格的行数和列数 rows和cols中的一个值可以为0,但是不能两个都是0。
public GridLayout(int rows, int cols, int hgap, int vgap)
// hgap和vgap分别表示网格间的水平间距和垂直间距
jPanel = new JPanel();
jPanel.setLayout(new GridLayout());
public CardLayout()
// 组件距容器左右边界和上下边界的距离为缺省值0
public CardLayout(int hgap, int vgap)
// 组件距容器左右边界和上下边界的距离为指定值
Void first(Container parent)
// 翻转到容器的第一张卡片
Void next(Container parent)
// 翻转到容器的下一张卡片
Void previous(Container parent)
// 翻转到容器的前一张卡片
Void last(Container parent)
// 翻转到容器的最后一张卡片
Void show(Container parent,String name)
// 显示指定卡片
import javax.swing.*;
import java.awt.*;
public class Demo26 extends JFrame {
private JPanel jPanel;
private JButton[] jButtons;
// 声明卡片布局管理器
private CardLayout cardLayout;
public Demo26(){
super("卡片布局");
// 实例化卡片布局管理器
cardLayout = new CardLayout();
// 实例化面板,其布局为卡片布局
jPanel = new JPanel(cardLayout);
// 实例化按钮
jButtons = new JButton[6];
for (int i = 0; i < jButtons.length; i++) {
jButtons[i]=new JButton("按钮"+(i+1));
}
for (int i = 0; i < jButtons.length; i++) {
jPanel.add("第"+i+"张",jButtons[i]);
}
this.add(jPanel);
cardLayout.last(jPanel);
// cardLayout.show(jPanel,"第3张");
this.setBounds(200,100,300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new Demo26();
}
}
BoxLayout(Container target,int axis)
// Container型参数target指明是为哪个容器设置此BoxLayout布局管理器
// int型参数axis指明组件的排列方向,
// BoxLayout.X_AXIS 水平方向排列,BoxLayout.Y_AXIS 垂直方向排列
行型盒布局
Box.createHorizontalBox()
// 获得一个具有行型盒式布局的盒式容器行型盒式布局容器中添加的组件的上沿在 同一水平线上
Box box = Box.createHorizontalBox();
列型盒布局
Box.createVerticalBox()
// 获得一个具有列型盒式布局的盒式容器列型盒式布局容器中添加的组件的上沿在同一垂直线上
Box box = Box.createVerticalBox();
import javax.swing.*;
import java.awt.*;
public class Demo25 extends JFrame {
private JPanel jPanel;
// 声明按钮数组
private JButton[] buttons;
public Demo25() {
super("盒布局");
// 面板实例
jPanel = new JPanel();
jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
// 实例化按钮组的长度
buttons = new JButton[6];
// 循环实例化按钮
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton("按钮" + (i + 1));
}
// 循环添加按钮
for (int i = 0; i < buttons.length; i++) {
jPanel.add(buttons[i]);
}
// 添加面板至窗体
this.add(jPanel);
// 设置位置和大小
this.setBounds(200, 100, 300, 300);
// 设置默认关闭模式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置可见
this.setVisible(true);
}
public static void main(String[] args) {
new Demo25();
}
}
setBounds(int x,int y,int width,int height)
// 前两个int型参数设置组件的位置,后两个int型参数设置组件的宽度和高度
用户操作产生一个事件后,事件将被事件源所绑定的事件监听器进行监听并捕获,随后事件监听器调用相应的事件处理方法进行处理。