• Container容器


    笔记:https://www.yuque.com/huangzhanqi/rhwoir/repuodh23fz01wiv

    仓库Java图形化界面: Java图形化界面学习demo与资料 (gitee.com)

    Container继承体系

    • Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
    • Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
    • ScrollPane 是 一个带滚动条的容器,它也不能独立存在,默认使用 BorderLayout 管理其内部组件布局;

    常见API

    Component作为基类,提供了如下常用的方法来设置组件的大小、位置、可见性等。

    方法签名

    方法功能

    setLocation(int x, int y)

    设置组件的位置。

    setSize(int width, int height)

    设置组件的大小。

    setBounds(int x, int y, int width, int height)

    同时设置组件的位置、大小。

    setVisible(Boolean b):

    设置该组件的可见性。

    Container作为容器根类,提供了如下方法来访问容器中的组件

    方法签名

    方法功能

    Component add(Component comp)

    向容器中添加其他组件 (该组件既可以是普通组件,也可以 是容器) , 并返回被添加的组件 。

    Component getComponentAt(int x, int y):

    返回指定点的组件 。

    int getComponentCount():

    返回该容器内组件的数量 。

    Component[] getComponents():

    返回该容器内的所有组件 。

    容器演示

    Window

    1. import java.awt.*;
    2. public class FrameDemo {
    3. public static void main(String[] args) {
    4. //1.创建窗口对象
    5. Frame frame = new Frame("这是第一个窗口容器");
    6. //设置窗口的位置和大小
    7. frame.setBounds(100,100,500,300);
    8. //设置窗口可见
    9. frame.setVisible(true);
    10. }
    11. }
    Panel
    1. public class PanelDemo {
    2. public static void main(String[] args) {
    3. //1.创建Frame容器对象
    4. Frame frame = new Frame("这里在测试Panel");
    5. //2.创建Panel容器对象
    6. Panel panel = new Panel();
    7. //3.往Panel容器中添加组件
    8. panel.add(new TextField("这是一个测试文本"));
    9. panel.add(new Button("这是一个测试按钮"));
    10. //4.把Panel添加到Frame中
    11. frame.add(panel);
    12. //5.设置Frame的位置和大小
    13. frame.setBounds(30,30,500,300);
    14. //6.设置Frame可见
    15. frame.setVisible(true);
    16. }
    17. }

    由于IDEA默认使用utf-8进行编码,但是当前我们执行代码是是在windows系统上,而windows操作系统的默认编码是gbk,所以会乱码,如果出现了乱码,那么只需要在运行当前代码前,设置一个jvm参数 -Dfile.encoding=gbk即可。

    ScrollPane

    1. import java.awt.*;
    2. public class ScrollPaneDemo {
    3. public static void main(String[] args) {
    4. //1.创建Frame窗口对象
    5. Frame frame = new Frame("这里测试ScrollPane");
    6. //2.创建ScrollPane对象,并且指定默认有滚动条
    7. ScrollPane scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
    8. //3.往ScrollPane中添加组件
    9. scrollPane.add(new TextField("这是测试文本"));
    10. scrollPane.add(new Button("这是测试按钮"));
    11. //4.把ScrollPane添加到Frame中
    12. frame.add(scrollPane);
    13. //5.设置Frame的位置及大小
    14. frame.setBounds(30,30,500,300);
    15. //6.设置Frame可见
    16. frame.setVisible(true);
    17. }
    18. }

    程序明明向 ScrollPane 容器中添加了 一个文本框和一个按钮,但只能看到 一个按钮,却看不到文本框 ,这是为什么 呢?这是因为ScrollPane 使用 BorderLayout 布局管理器的缘故,而 BorderLayout 导致了该容器中只有一个组件被显示出来 。 下一节将向详细介绍布局管理器的知识 。

  • 相关阅读:
    session与JWT认证
    MFC程序设计——用button更改静态文本+显示内容并弹出新内容+静态文本动态打开位图
    第三十四章 使用 CSP 进行基于标签的开发 - Hyperevent例子
    Kotlin 运算符重载
    前端实现websocket通信讲解(vue2框架)
    网络中的一些基本概念
    http-server的安装、前端使用http-server启本地服务
    解决Error(s) in loading state_dict for *** :
    LeetCode //C - 236. Lowest Common Ancestor of a Binary Tree
    你了解TCP协议吗(一)?
  • 原文地址:https://blog.csdn.net/m0_73843666/article/details/132759174