JAVA图形界面(GUI)之容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

在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);
   }
}

运行效果:

Dialog

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
目录
相关文章
|
7天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
15 1
|
1月前
|
Java 容器
Java常用组件、容器与布局
Java常用组件、容器与布局
16 0
|
1月前
|
安全 Java API
Java并发 - J.U.C并发容器类 list、set、queue
Queue API 阻塞是通过 condition 来实现的,可参考 Java 并发 - Lock 接口 ArrayBlockingQueue 阻塞 LinkedBlockingQueue 阻塞 ArrayQueue 非阻塞 LinkedQueue 非阻塞
|
1月前
|
Java 开发者 容器
【Java】深入了解Spring容器的两个关键组件
【Java】深入了解Spring容器的两个关键组件
10 0
|
2月前
|
Java 容器
LeetCode题解-盛水最多的容器-Java
盛水最多的容器-Java
11 0
|
2月前
|
运维 Java 开发者
深入浅出:使用Docker容器化改善Java应用的部署与运维
在当今快速迭代的软件开发周期中,确保应用的一致性、可移植性与易于管理成为了开发与运维团队面临的重大挑战。本文旨在介绍如何通过Docker容器技术,有效地解决这些问题,特别是针对Java应用。我们将从Docker的基本概念出发,逐步深入到实际操作,展示如何将传统的Java应用容器化,以及这一过程如何帮助简化部署流程、提高应用的可靠性和可伸缩性。不同于常规的技术文章,本文试图以一种更加易于理解和实践的方式,让读者能够快速掌握容器化技术,并将其应用于日常的开发与运维工作中。
90 0
|
2月前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
303 2
|
1天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
10 0
|
1天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。
|
5天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。