Swing
1、在Java中,所有的Swing组件都保存在javax.swing包中,Swing组件的所有类都继承自Container类,然后分为两个主要分支,分别是容器分支和组件分支。
2、除了顶级容器类JWindow、JFrame、和JDialog以外,Jcomponent类几乎是所有Swing组件的公共超类,常用的有(JButton、JCheckBox、JList、JRadioButton、JScrollbar、JTextComponent)。
JFrame
1、独立存在的顶级容器,不能放置在其他容器中。
2、常用方法:
-
JFrame() 创建一个窗体对象
-
public JFrame(String title) 创建一个指定标题的窗体对象
-
public void setsize(int width,int height) 设置窗体大小
-
public void setSize(Dimention d) 通过Dimention设置窗体大小
-
public void Background(Color c) 设置窗体背景颜色
-
public void setLocation(int x,int y) 设置组件显示位置
-
public void setLocation(Point p) 通过Point设置组件显示位置
-
public void setVisiable(boolean b) 显示或者隐藏组件
-
public void pack() 调整窗口大小适合子组件的大小和布局
-
publilc setLayout(Component c) 设置布局管理器,如果为null则表示不使用布局管理器
-
public Component add(Component c) 向容器中增加组件
例:
import javax.swing.*;
public class Frame {
private static void createAndShowGUI() {
JFrame frame=new JFrame("窗口frame");
frame.setSize(600, 400);
frame.setLocation(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Frame::createAndShowGUI);
}
}
JDialog
1、JDialog对话框可分为两种,分别是模态对话框和非模态对话框。
模态对话框:是指用户需要处理完当前对话框后才能继续与其他窗口交互的对话框。
非模态对话框:允许用户在处理对话框的同时与其他窗口交互的对话框。
2、常用方法:
JDialog(Frame owner) 创建一个非模态对话框,owner为对话框所有者(顶级窗口JFrame)
JDialog(Frame owner,String title) 创建一个具有指定标题的非模态对话框
JDialog(Frame owner,boolean model) 创建一个有指定模式的无标题对话框
setModel() JDialog对象后可以调用这个方法设置对话框是否为模态
例:
import javax.swing.*;
public class Frame {
private static void createAndShowGUI() {
JFrame frame=new JFrame("窗口frame");
frame.setSize(600, 400);
frame.setLocation(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JDialog dialog=new JDialog(frame,"dialog");
dialog.setSize(400, 400);
dialog.setModal(true);
dialog.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Frame::createAndShowGUI);
}
}
布局管理器
主要的布局管理器有四种,FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器),在程序中可以调用setLayout()方法设置布局管理器
FlowLayout
1、容器会把组件按照添加顺序从左向右放置。当到达容器的边界时,自动将组件放到下一行的开始位置。这些组件可以左对齐、居中对齐或右对齐,默认为居中对齐。
2、三个构造方法:
public FlowLayout() 组件默认居中对齐,水平、垂直间距默认为5个单位
public FlowLayout(int align) 指定组件相对于容器的对齐方式,水平、垂直间距默认为5个单位
public FlowLayout(int align,int hgap,int vgap) 指定组件的对齐方式和水平、垂直间距
3、四个常量:
CENTER、LEADING、 LEFT、RIGHT
分别为:居中对齐、和容器开始端对齐方式一样、左对齐、右对齐
BorderLayout
1、把窗体划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。
2、两个构造方法:
public BorderLayout() 构造没有间距的布局器
public BorderLayout(int align,int hgap,int vgap) 构造有水平和垂直间距的布局器
3、五个常量:
EAST、SOUTH、WEST、NORTH、CENTER。
4、向BorderLayout管理的容器添加组件时,如果不指定添加到哪个区域,则默认添加到CENTER区域。
5、一个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件
GridLayout
1、GridLayout使用纵横线将容器分成n行m列大小相等的网格,每个网格中放置一个组件,组件将自动占据网格的整个区域。
2、三个构造方法:
GridLayout() 默认只有一行,每个组件占一列
GridLayout(int rows,int cols) 指定容器的行数和列数
GridLayout(int rows,int cols,int hgap,int vgap) 指定容器的行数和列数以及组件之间的水平、垂直间距
GridBagLayout
这个比较复杂,抽空仔细看一看