如何使用 Swing 创建可扩展面板?

2023-11-24

我想创建一个展开和折叠面板的列表,如下图所示:

expandand collapse panels

我还没有找到任何与此相关的 Swing 组件,所以我开始创建类似的东西。 我尝试将按钮一个放在另一个下面,以填充可用宽度,但实际上不起作用。我只能看到最后添加的一个。

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    panel.add(new JButton("Delphi Projects"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("Delphi Projects | Delphi Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("Other Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel
    panel.add(new JButton("C++ Builder Projects | C++ Builder Files"), BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.NORTH); // hidden panel

    JScrollPane scroll = new JScrollPane(panel);

你可以看看JXTaskPaneContainer and JXTaskPane from SwingX项目具有以下优势:

  • 它们是组件,就像JPanel因此,与他们合作不需要额外的努力。
  • 与手风琴不同,您可以随时展开多个面板 时间。
  • 它们对折叠/展开事件具有凉爽且平滑的效果。
  • 与树/树桌不同,您不必搞乱其中任何一个树模型 nor 树表模型根本不。此外,树和树表是旨在以分层形式显示数据的组件,而不是向其中添加组件。

如果您不喜欢任务窗格并想自己实现一些东西,那么您可以JXCollapsiblePane(也可在 SwingX API 中使用)。

Check SwingLabs 演示查看完整的 SwingX 组件演示集。

截屏

enter image description here

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

如何使用 Swing 创建可扩展面板? 的相关文章

  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • OSGi:如果不取消服务会发生什么

    这是我获取 OSGi 服务的方式 ServiceReference reference bundleContext getServiceReference Foo class getName Foo foo Foo bundleContex
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 如何在 Java 中测试一个类是否正确实现了 Serialized(不仅仅是 Serialized 的实例)

    我正在实现一个可序列化的类 因此它是一个与 RMI 一起使用的值对象 但我需要测试一下 有没有办法轻松做到这一点 澄清 我正在实现该类 因此在类定义中添加 Serialized 很简单 我需要手动序列化 反序列化它以查看它是否有效 我找到了
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • Spring data redis - 监听过期事件

    我想使用 KeyExpirationEventMessageListener 监听过期事件 但我找不到示例 有人知道如何使用 Spring boot 1 4 3 和 Spring Data Redis 来做到这一点吗 我目前正在做这个 Je
  • 在 Codename One 项目中本地保存图像

    我已按照此视频中创建相机捕获页面的教程进行操作 http www youtube com watch v nF4eqzVcsic 所以我现在的代码如下所示 protected void onCamera CaptureButtonActio
  • 通过命令提示符执行 PHP5 脚本时是否可以读取 cookie/session 值?

    当我使用命令提示符执行 php 脚本时 我需要从 cookie 或会话中读取一些值 我怎样才能做到这一点 如何从 Windows 命令提示符访问 cookie 或会话值 Cookie 是从用户的网络浏览器发送的 当您从命令行执行 php 脚
  • Python icmp 套接字服务器(不是 tcp\udp)

    我正在尝试用 Python 编写一个可以接收 ICMP 数据包的套接字服务器 这是我的代码 s socket socket socket AF INET socket SOCK RAW socket IPPROTO ICMP host so
  • Spark如何处理大于集群内存的数据

    如果我只有 1 个内存为 25 GB 的执行器 并且它一次只能运行一个任务 那么是否可以处理 转换和操作 1 TB 数据 如果是 那么它将如何读取以及中间数据将存储在哪里 同样对于相同的场景 如果 hadoop 文件有 300 个输入拆分
  • Angular 2 ng-bootstrap Modal:如何将数据传递到入口组件

    我正在尝试将数据发送到自定义模式内容组件 以便我可以从任何其他组件调用它 而不是重复代码 我是 Angular 2 的新手 并且遵循了 ng boostrap 的 组件作为内容 演示以及 Angular 文档中的 组件交互 但尚未找到使其工
  • 在 Angular 2 中动态创建查询参数

    我想实现查询参数可以动态地传递给它 现在我可以动态设置参数的值 但不能设置键 这是我的代码 onItemClick item FilterItem group FilterGroup i number let navigationExtra
  • EF 和存储库模式 - 最终在一个控制器中出现多个 DbContext - 有任何问题(性能、数据完整性)吗?

    我对 ASP NET MVC 3 的大部分了解来自于阅读 Adam Freeman 和 Steven Senderson 所著的 Pro ASP NET MVC 3 Framework 一书 对于我的测试应用程序 我尝试非常严格地遵循他们的
  • 几个 jar 中的 freemarker 模板

    如何配置 freemarker 来搜索多个 jar 中的模板 随着春天
  • 自定义 iPhone 振动强度

    这是一个相关的问题iOS 中有用于自定义振动的 API 吗 我能够创建自定义振动模式 但无法控制强度 这是从 Kevin Cao 的答案中复制的 该答案支持自定义振动模式 NSMutableDictionary dict NSMutable
  • C++ 预处理器条件参数

    请注意C 03 任何 C 11 解决方案都不适合我 但为了获取知识而发布它们 我知道预处理器可以执行以下操作 define FOO 4 if FOO 4 cout lt lt hi lt
  • 表示并解决给定图像的迷宫

    给定图像表示和解决迷宫的最佳方法是什么 给定一张 JPEG 图像 如上所示 读取它 将其解析为某种数据结构并解决迷宫的最佳方法是什么 我的第一直觉是逐像素读取图像并将其存储在布尔值列表 数组 中 True对于白色像素 以及False对于非白
  • 不断循环一个javascript数组并将结果显示到div?

    我的网站有一堆推荐 当前在一个页面上 我试图让一个 div 以 5 秒的间隔显示每个 1 如果数组达到最后一个值 它应该再次开始回到数组的开头 这是我到目前为止所拥有的 var testimonial new Array testimoni
  • ctc_loss 错误“未找到有效路径。”

    训练模型tf nn ctc loss每次运行训练操作时都会产生错误 tensorflow core util ctc ctc loss calculator cc 144 No valid path found 与之前有关此函数的问题不同
  • 我可以在没有本地副本的情况下在远程存储库上发出 git rev-parse 吗?

    我的本地 git 存储库位于加密卷内 我希望能够跑步git pull all仅当远程有新提交时 但是 我无法使用像这样的接收后钩子here因为我没有加密卷的密码 这意味着即使钩子被触发 我仍然不知道安装卷和提取新更改的密码 所以我正在寻找其
  • 精度损失 - int -> float 或 double

    我有一道考试题正在复习 题目为 4 分 在java中 我们可以将int分配给double或float 这会丢失信息吗 为什么 我这样说是因为整数通常具有固定的长度或大小 存储数据的精度是有限的 而以浮点存储信息可以是无限的 本质上我们会因此
  • 如何为 Symfony2 中的所有控制器添加一些路由前缀?

    我使用注释来定义控制器中的路由 并且我有 15 个控制器 全部由执行 path1 path2 有什么方法可以在所有这些控制器中通过以下方式访问它们 admin path1 and admin path2 我不想通过更改每个文件来输入它 我可
  • 与数据表进行数据绑定后,GridView Column.Count 始终为 0

    我正在尝试有条件地显示 隐藏 GridView 列 我正在创建一个动态 DataTable 然后将其绑定到 GridView 后来 在回发时 我正在检查条件并想要显示 隐藏 GridView 的几列 但 Column Count 始终为 0
  • 如何使用 PyQt5 在同一窗口中更改 UI?

    我刚刚开始使用 PyQt5 我一直在尝试完成一项看似非常简单的任务 但无法获得足够的信息 经过一番谷歌搜索后 我已经能够关闭一个窗口 并在加载另一个 UI 的情况下启动另一个窗口 但这不是我想要在这里做的 我想在同一个窗口中切换用户界面 我
  • 如何使用 Swing 创建可扩展面板?

    我想创建一个展开和折叠面板的列表 如下图所示 我还没有找到任何与此相关的 Swing 组件 所以我开始创建类似的东西 我尝试将按钮一个放在另一个下面 以填充可用宽度 但实际上不起作用 我只能看到最后添加的一个 JPanel panel ne