Swing组件中面板(JPanel)的使用

2023-11-17

JPanel组件定义面板实际上是一种容器组件,用来容纳各种其他轻量级组件。此外,用户还可以用这种面板容器绘制图形。
JPanel的构造方法如下:
JPanel():创建具有双缓冲和流布局(FlowLayout)的面板。
JPanel(LayoutManager layout):创建具有制定布局管理器的面板。
  JPanel的 常用方法:

void add(Component):添加组件。
void add(Component,int):添加组件至索引指定位置。
void add(Component,Object):按照指定布局限制添加组件。
void add(Component,Object,int):按照指定布局管理器限制添加组件到指定位置。
void remove(Component):移除组件。
void remove(int):移除指定位置的组件。
void removeAll():移除所有组件。
void paintComponent(Graphics):绘制组件。``
void repaint():重新绘制。
void setPreferredSize(Dimension):设置组件尺寸。
Dimension getPreferredSize():获取最佳尺寸。

1 package com.sy.swing;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Color;
 5 import java.awt.Container;
 6 import java.awt.Dimension;
 7 import java.awt.FlowLayout;
 8 import java.awt.Graphics;
 9 
10 import javax.swing.JButton;
11 import javax.swing.JFrame;
12 import javax.swing.JPanel;
13 
14 public class JPanelExample extends JFrame {
15     JButton[] buttons;
16     JPanel panel1;
17     CustomPanel panel2;
18     
19     public JPanelExample(){
20         super("面板实例");
21         Container container = getContentPane();
22         container.setLayout(new BorderLayout());
23         panel1 = new JPanel(new FlowLayout()); //创建一个流布局管理器的面板
24         buttons = new JButton[4];
25         for (int i = 0; i < buttons.length; i++) {
26             buttons[i]=new JButton("按钮"+(i+1));
27             panel1.add(buttons[i]); //添加按钮到面板panel1中
28         }
29         panel2 = new CustomPanel();
30         container.add(panel1,BorderLayout.NORTH);
31         container.add(panel2,BorderLayout.CENTER);
32         pack();
33         setVisible(true);
34     }
35     
36     public static void main(String[] args) {
37         JPanelExample jpe = new JPanelExample();
38         jpe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
39     }
40     
41     class CustomPanel extends JPanel{ //定义内部类CustomPanel
42         @Override
43         protected void paintComponent(Graphics g) {
44             super.paintComponent(g);
45             g.drawString("Welcome to Java Shape World", 20, 20);
46             g.drawRect(20, 40, 130, 130);
47             g.setColor(Color.GREEN);  //设置颜色为绿色
48             g.fillRect(20, 40, 130, 130); //绘制矩形
49             g.drawOval(160, 40, 100, 100); //绘制椭圆
50             g.setColor(Color.ORANGE); //设置颜色为橙色
51             g.fillOval(160, 40, 100, 100); //绘制椭圆
52         }
53         @Override
54         public Dimension getPreferredSize() {
55             // TODO Auto-generated method stub
56             return new Dimension(200,200);
57         }
58     }
59 
60 }

运行结果如下:
在这里插入图片描述

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

Swing组件中面板(JPanel)的使用 的相关文章

随机推荐

  • react路由使用

    1 插件添加 cnpm install react router dom S 2 app js书写 import React Component from react 路由的2种形式 hash HashRouter H5的historyAp
  • mysql最大连接数修改

    当mysql出现 Too many connections 异常时 说明mysql数据库连接数过高 增加方法如下 如果可以登录 可以使用以下语句临时增加连接数 重启后失效 set GLOBAL max connections 1024 永久
  • zbrush插件布尔运算插件perfectbool安装方法

    zbrush插件直接复制粘贴到此路径的文件夹里 D Program Files Pixologic ZBrush 2020 1 3 ZStartup ZPlugs64 安装好了后 重启zb软件 即可在右侧面板最下面找到该插件了
  • MybatisPlus常用方法

    1 in QueryWrapper
  • 如何用matlab写一个电动汽车空调仿真模型

    首先 您可以研究电动汽车空调的工作原理 并了解其相关的物理参数 例如空调系统的热量转移 制冷剂流动以及空气循环等 然后 您可以使用 MATLAB 的 Simulink 模块开发模型 Simulink 是一个基于图形的仿真工具 可以方便地模拟
  • 用顺序表实现图书信息管理(增删改查)---c语言版

    顺序表 概念 用一组地址连续的存储单元依次存储线性表的数据元素 这种存储结构的线性表称为顺序表 特点 逻辑上相邻的数据元素 物理次序也是相邻的 实现 用结构体定义一本图书 typedef struct int id char name 20
  • zotero+坚果云同步

    在使用Zotero整理文献的时候 软件自带的云同步有300M的上限 但软件还提供了Webdav同步的设置选项 在国内的众多云盘中 坚果云是为数不多甚至说唯一的支持Webdav的云盘 设置同步的流程如下 在网页端的坚果云登录之后 点击右上角的
  • 微信小程序常用表单控件

    感谢慕课网七月老师课程 如何一次性获取所有表单控件的值并且提交到服务器上去呢 from表单提交 使用form把所有子元素包含进去
  • Vue.js 学习笔记

    vue基础 显示js界面传过来的数据 v bind 绑定提示信息 v if 条件语句 v for 绑定数组数据 v on 添加一个事件监听器 通过它可以调用Vue实例中定义的方法 v model 表单输入和应用状态之间的双向绑定 Vue c
  • torch.nn.Module模块简单介绍

    torch nn是专门为神经网络设计的模块化接口 nn Module是nn中十分重要的类 在介绍该模块前 我们先看下pytorch官方对该模块的注释 根据官方注释我们了解到Module类是所有神经网络模块的基类 Module可以以树形结构包
  • 项目失败的思考

    1 鲁莽的追求新的开发框架 2 没有让组员提前学习必要的知识 3 低估项目难度 没有想到潜在的需求和技术难点 4 项目没有时间性的计划 5 任务没有很好的分割 1 项目争取阶段 做好demo 2 项目准备阶段 选择开发框架 让组员了解相关知
  • 【Python】快速处理:ModuleNotFoundError: No module named 'pygame'

    一 问题 在安装Python3 7之后 再安装Pygame却不能导入该包 报错如下 ModuleNotFoundError No module named pygame 尝试了好多方法 都不行 最后找到解决办法了 主要原因是安装的版本或者路
  • RabbitMq 报错An unexpected connection driver error occured ....Socket Closed

    An unexpected connection driver error occured java net SocketException Socket Closed at java net SocketInputStream socke
  • 自动zksync刷账户交互(附代码)

    自动化任务的 Python 代码 它使用 Selenium 库来控制浏览器 解锁小狐狸 task unlock metamask ads zk主网连接钱包 初始化 ZK主网任务1 转账 print 选择ZK主网任务1 转账 task zk
  • 微信到 Obsidian 2.0

    注意 新项目已发布 Obsidian 从本地到云端 obcsapi v3 0 下面文章属于 2 0 版本 新项目是 3 0 版本 请读者根据自身实际情况酌情选择 本文原文 https www ftls xyz posts wechat2s3
  • 基于改进YOLOv7和CRNN的管道裂缝检测系统(源码&教程)

    1 研究背景 随着现代城市的发展 城市规模不断扩大 居民越来越多 早期深埋于城市地下的排水管道己不堪重负 越来越引起人们的广泛关注 目前在工程应用领域 排水管道缺陷主要靠人工的肉眼识别 费时费力 主观误差大 因此开展排水管道缺陷智能识别研究
  • 常用运放电路分析

    1 运算放大器电路分析方法 由于运放的电压放大倍数很大 一般通用型运算放大器的开环电压放大倍数都在80 dB以上 而运放的输出电压是有限的 一般在 10 V 14 V 因此运放的差模输入电压不足1 mV 两输入端近似等电位 相当于 短路 开
  • 亚马逊云科技云技能学习

    文章目录 前言 一 云技能学习的优势 二 云技能学习的学习路径 三 云技能学习的未来前景 总结 前言 亚马逊云科技 Amazon Web Services AWS 作为全球领先的云计算服务提供商 提供了众多创新的云技术解决方案 在这些方案中
  • [转载]一分钟讲明白区块链数据不可篡改和51%攻击原理

    转载 一分钟讲明白区块链数据不可篡改和51 攻击原理 如果你回家过年需要向亲戚朋友讲区块链 这篇文章能让你一分钟讲明白区块链最大的优点 数据不可篡改 图片发自简书App 第1章 不可篡改的数据库其实并不新鲜 我们都有微信群 微信群的聊天记录
  • Swing组件中面板(JPanel)的使用

    JPanel组件定义面板实际上是一种容器组件 用来容纳各种其他轻量级组件 此外 用户还可以用这种面板容器绘制图形 JPanel的构造方法如下 JPanel 创建具有双缓冲和流布局 FlowLayout 的面板 JPanel LayoutMa