Java Swing基础(顶层容器,中间层容器,原子组件)

2023-11-17

Swing基础

Swing顶层容器

Swing的3个顶层容器类

  • JFrame、JApplet、JDialog
  • 都是重量级组件,分别继承了AWT组件Frame、Applet和Dialog
  • 每个顶层容器都有一个内容面板,通常直接或间接的容纳别的可视组件。
  • 可以有选择的为顶层容器添加菜单,菜单被放置再顶层容器上,但是在内容面板外。

JFrame使用举例

package swing;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class FrameDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame frame = new JFrame("FrameDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel emptyLabel = new JLabel("Hello World!!!");
        emptyLabel.setPreferredSize(new Dimension(175,100));
        frame.getContentPane().add(emptyLabel,BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}

就直接定义一个顶层容器的实例就可以了

对话框使用:通过静态方法showxxxDialog,可以产生四种简单的对话框,它们的方法参数绝大多数都要提供父窗口组件ParentComponent,只有关闭这些简单的对话框后,才能返回其父窗口,也就是说,它们绝大多数是模态的

对话框使用举例

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class JOptionPaneDemo extends JFrame implements ActionListener{
    public JOptionPaneDemo()
    {
        super("简单对话框");
        Container c = getContentPane();
        JButton button = new JButton("退出");
        button.addActionListener(this);
        //添加事件监听器
        c.setLayout(new FlowLayout());
        c.add(button);
    }
    public void actionPerformed(ActionEvent e)
    {
        int select = JOptionPane.showConfirmDialog(this, "确定退出吗?",
                "确定",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
        if(select == JOptionPane.OK_OPTION);
            System.exit(0);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame frame = new JOptionPaneDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200,100);
        frame.setVisible(true);
    }
}

中间层容器

中间层容器是为了容纳其他组件而存在的

中间层容器

  • 一般用途的

    • Jpanel
    • JScrollPane
  • 特殊用途

    • JInternalFrame
    • JRootPane(可以直接从顶层容器中获得)

在这里插入图片描述

只要了解了中间层容器的基本概念就可以了,关于各种容器的用法可以到https://docs.oracle.com/javase/tutorial/这里去看

原子组件

直接与用户交互的组件

这里查看

原子组件

直接与用户交互的组件

各种原子组件的用法可以到上面的网站去看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing基础(顶层容器,中间层容器,原子组件) 的相关文章

  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 正规表达式与有限自动机

    1 美图 2 概念 3 正规式和正规集 正规集可以用正规表达式 简称正规式 表示 正规表达式是表示正规集一种方法 一个字集合是正规集当且仅当它能用正规式表示 3 1 正规式和正规集的递归定义 4 确定有限自动机 DFA
  • 页面启动自动使用jquery实现自动加载方法的三种形式

    第一种 function a 声明一个方法 alert a方法 window nl ad function 自动调用上面那个方法 a 第二种 function b alert b方法 document ready function 在这里写
  • el-tree使用setCheckedKeys清空树节点不生效

    问题描述 在切换下拉选框的change事件中使用this refs tree setCheckedKeys 清空目标树已选择节点 但不生效 问题解决 清空 clearAllNodes function this nextTick funct
  • LaTeX Error: Missing \begin{document}

    解决方案 将除 tex之外的文件全部删掉 再重新运行一遍 就可以啦
  • 【opencv实践】人脸识别匹配——识别自己的脸

    本文由 星沉阁冰不语出品 转载请注明作者和出处 文章链接 http blog csdn net xingchenbingbuyu article details 51472330 在之前数据收集和预处理和模型训练两篇博客中 已经把人脸识别的
  • 字符函数和内存函数的模拟实现

    1 字符串函数 长度不受限的函数 1 1strlen函数 字符串已经 0 作为结束标志 strlen函数返回的是在字符串中 0 前面出现的字符个数 不包含 0 参数指向的字符串必须要以 0 结束 模拟实现 size t my strlen1
  • 斯坦福大学教授,极力推荐5本python入门书籍,入门最快基础最好

    为什么要选择python Python是一门更注重可读性和效率的语言 尤其是相较于 Java PHP 以及 C 这样的语言 它的这两个优势让其在开发者中大受欢迎 如果你正处于想学习python或者正在python入门阶段 推荐5套pytho
  • 简述关于ASP.NET MVC与.NET CORE 的区别

    简述关于ASP NET MVC与 NET CORE的区别 1 关于ASP NET 关于MVC 刚开始接触这个技术的时候我经常不理解他们的名字 我相信许多学ASP NET开发人员开始接触MVC应该也和我一样产生很多为什么 也会误认为认为MVC
  • K8S之使用yaml格式定义pod

    mysql pod yaml overView 1 web服务与db打包放在同一个pod中 本地通过localhost来访问 并附带存活性 可用性检测 2 补充重启策略 镜像拉去策略 3 对容器资源进行限制 apiVersion apps
  • VSCode 插件Code Runner 中文提示乱码

    所属专栏 程序错误解决方法 建议收藏 作 者 我是夜阑的狗 个人简介 一个正在努力学技术的CV工程师 专注基础和实战分享 欢迎咨询 欢迎大家 这里是CSDN 我总结知识的地方 喜欢的话请三连 有问题请私信 文章目录 前言 一 Code Ru
  • 海量数据存储之Key-Value存储简介

    转自 http forchenyun iteye com blog 744935 Key value存储简介 具备高可靠性及可扩 展性的海量数据存储对互联网公司来说是一个巨大的挑战 传统的数据库往往很难满足该需求 并且很多时候对于特定的系统
  • V2X应用场景之协同式自动驾驶

    转自 http zhidx com p 96637 html V2X应用场景之协同式自动驾驶 这个应用场景我觉得是比较典型的 也想多花点时间给大家介绍一下 就是关于V2X在自动驾驶里面很典型的应用 我们管它叫协同式自动驾驶车队 什么意思呢
  • DockerFile详细介绍

    dockerfile 文件中的常见指令 详细教程地址 ADD 复制和解包文件 COPY 复制文本 CMD 指定这个容器启动的时候要运行的命令 只有最后一个会生效可被替代 ONBUILD 当构建一个被继承DockerFile 这个时候就会运行
  • Mysql多对多查询

    1 多对多需要三张表 如图所示 2 对应是SQL语句 SELECT A aname B hobby FROM A B AB WHERE A id AB aid AND B id AB bid 3 对应的查询结果
  • A list of Go projects

    Indexes and search engines These sites provide indexes and search engines for Go packages godoc org go search gowalker S
  • Python 实现FIR低通滤波器设计

    FIR Finite Impulse Response 有限脉冲响应 低通滤波器是一种数字滤波器 它可以在数字信号处理中用来对信号进行低通滤波 下面是一个简单的 Python 代码示例 用于设计 FIR 低通滤波器 import numpy
  • Oracle查看主键、删除主键以及新增联合主键

    Oracle查看主键 删除主键以及新增联合主键 主键是用于唯一标识表中的每一条数据的 不能重复也不能为null 一个表中不能有多个独立的主键 但是一个表中可以有联合主键 即多个字段组合 一 查看主键 SELECT FROM USER CON
  • vue中常用的7个属性

    1 el属性 用来指示vue编译器从什么地方开始解析 vue的语法 可以说是一个占位符 2 data属性 用来组织从view中抽象出来的属性 可以说将视图的数据抽象出来存放在data中 3 template属性 用来设置模板 会替换页面元素
  • 字节序转换

    一 概念 1 小端法 Little Endian 就是低位字节排放在内存的低地址端 即该值的起始地址 高位字节排放在内存的高地址端 2 大端法 Big Endian 就是高位字节排放在内存的低地址端 即该值的起始地址 低位字节排放在内存的高
  • Java Swing基础(顶层容器,中间层容器,原子组件)

    Swing基础 Swing顶层容器 Swing的3个顶层容器类 JFrame JApplet JDialog 都是重量级组件 分别继承了AWT组件Frame Applet和Dialog 每个顶层容器都有一个内容面板 通常直接或间接的容纳别的