在Swing中,容器可以用来组织界面布局,容器中可以添加容器和组件。常用的有如下几种:
顶层容器:JFrame,JApplet,JDialog,JWindow
中间容器:JPanel,JScrollPane,JSplitPane,JToolBar
特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.
这篇博客将抽取其中几个常用容器为大家介绍,剩余的在之后用到了再介绍。
JFrame
JFrame是是个顶层容器,是屏幕上window的对象,能够最大化、最小化、关闭。
在上一篇博客《JAVA图形界面(GUI)》中的Swing示例中已经用到了。
上图就是JFrame的运行效果,中间显示”Hello Swing”的是Jpanel面板,在下面会介绍。
构造方法
方法名 | 说明 |
---|---|
JFrame() | 构造一个初始时不可见的新窗体 |
JFrame(GraphicsConfiguration gc) | 以屏幕设备的指定 GraphicsConfiguration 和空白标题创建一个Frame |
JFrame(String title) | 创建一个新的、初始不可见的、具有指定标题的 Frame |
JFrame(String title, GraphicsConfiguration gc) | 创建一个具有指定标题和指定屏幕设备的GraphicsConfiguration的JFrame |
使用示例
import javax.swing.JFrame;
public class SwingDemo extends JFrame
{
public static void main(String[] args)
{
// 实例化JFrame对象并设置窗体标题
JFrame frame = new JFrame("Swing Demo");
// 设置窗体大小
frame.setSize(300, 150);
// 设置默认关闭操作为:关闭时退出
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体在屏幕上的位置
frame.setLocation(100, 100);
// 设置窗体是否显示
frame.setVisible(true);
}
}
JDialog
对话框也是一个窗体,在对话框上没有最大化和最小化按钮。
方法名 | 说明 |
---|---|
JDialog() | 创建一个没有标题并且没有指定 Frame 所有者的无模式对话框 |
JDialog(Dialog owner) | 创建一个没有标题但将指定的 Dialog 作为其所有者的无模式对话框 |
JDialog(Dialog owner, boolean modal) | 创建一个具有指定所有者 Dialog 和模式的对话框 |
JDialog(Dialog owner, String title) | 创建一个具有指定标题和指定所有者对话框的无模式对话框 |
JDialog(Dialog owner, String title, boolean modal) | 创建一个具有指定标题、模式和指定所有者 Dialog 的对话框 |
JDialog(Dialog owner, String title, boolean modal, GraphicsConfiguration gc) | 创建一个具有指定标题、所有者Dialog、模式和 GraphicsConfiguration 的对话框。 |
JDialog(Frame owner) | 创建一个没有标题但将指定的 Frame 作为其所有者的无模式对话框 |
JDialog(Frame owner, boolean modal) | 创建一个具有指定所有者 Frame、模式和空标题的对话框。 |
JDialog(Frame owner, String title) | 创建一个具有指定标题和指定所有者窗体的无模式对话框 |
JDialog(Frame owner, String title, boolean modal) | 创建一个具有指定标题、所有者 Frame 和模式的对话框 |
JDialog(Frame owner, String title, boolean modal, GraphicsConfiguration gc) | 创建一个具有指定标题、所有者 Frame、模式和 GraphicsConfiguration 的对话框 |
JDialog(Window owner) | 创建一个具有指定所有者 Window 和空标题的无模式对话框 |
JDialog(Window owner, Dialog.ModalityType modalityType) | 创建一个具有指定所有者 Window、模式和空标题的对话框 |
JDialog(Window owner, String title) | 创建一个具有指定标题和所有者 Window 的无模式对话框 |
JDialog(Window owner, String title, Dialog.ModalityType modalityType) | 创建一个具有指定标题、所有者 Window 和模式的对话框 |
JDialog(Window owner, String title, Dialog.ModalityType modalityType, GraphicsConfiguration gc) | 创建一个具有指定标题、所有者 Window、模式和 GraphicsConfiguration 的对话框 |
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class SwingDemo
{
public static void main(String[] args)
{
JDialog dialog = new JDialog((Frame) null, "Dialog");
// 设置窗体大小
dialog.setSize(300, 150);
// 设置默认关闭操作为:关闭时退出
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// 设置窗体在屏幕上的位置
dialog.setLocation(100, 100);
// 设置窗体是否显示
dialog.setVisible(true);
}
}
运行效果:
JWindow
JWindow是一个没有边框的窗体。
方法名 | 说明 |
---|---|
JWindow() | 创建未指定所有者的窗口 |
JWindow(Frame owner) | 使用指定的所有者框架创建窗口 |
JWindow(GraphicsConfiguration gc) | 使用屏幕设备的指定 GraphicsConfiguration 创建窗口 |
JWindow(Window owner) | 使用指定的所有者窗口创建窗口 |
JWindow(Window owner, GraphicsConfiguration gc) | 使用屏幕设备的指定所有者窗口和 GraphicsConfiguration 创建窗口 |
import javax.swing.JFrame;
import javax.swing.JWindow;
public class SwingDemo
{
public static void main(String[] args)
{
JWindow window = new JWindow();
// 设置窗体大小
window.setSize(300, 150);
// 设置窗体在屏幕上的位置
window.setLocation(100, 100);
// 设置窗体是否显示
window.setVisible(true);
}
}
JPanel
JPanel属于中间容器,不可独立存在,需要依附于其他容器,在GUI开发中,JPanel经常使用,利用JPanel,我们可以轻易的对组件进行布局。
构造方法
方法名 | 说明 |
---|---|
JPanel() | 创建具有双缓冲和流布局的新 JPanel |
JPanel(boolean isDoubleBuffered) | 创建具有 FlowLayout 和指定缓冲策略的新 JPanel |
JPanel(LayoutManager layout) | 创建具有指定布局管理器的新缓冲 JPanel |
JPanel(LayoutManager layout, boolean isDoubleBuffered) | 创建具有指定布局管理器和缓冲策略的新JPanel |