java - 如何使用 swing 创建可扩展面板?

标签 java swing expand

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

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

最佳答案

您可以查看来自SwingXJXTaskPaneContainerJXTaskPane具有以下优点的项目:

  • 它们就像 JPanel 一样是组件,因此使用它们不需要额外的努力。
  • 与 Accordion 不同,您可以同时展开多个面板 时间。
  • 它们对折叠/展开事件有很酷和流畅的效果。
  • 与树/树表不同,您不必弄乱 TreeModel也不TreeTableModel根本。树和树表也是旨在以分层形式显示数据的组件,而不是向其中添加组件。

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

检查 SwingLabs Demos一套完整的 SwingX 组件演示。

截图

enter image description here

关于java - 如何使用 swing 创建可扩展面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703056/

相关文章:

java - 如何发送认证字符串建立TCP连接?

java - 递归处女通过碰撞检测获得堆栈溢出错误

java - 管理 quartz 作业、删除

java - 如何获得这个Java布局?

java - 尝试使用获取缩放实例将图像添加到 JButton

java gridlayout gui - 面板太多?

c - *** 检测到 glibc *** ./all : realloc(): invalid next size: 0x0804b008 ***

php - 不断扩展 Div 以适应 PHP/MySQL 内容

java - 在 JFrame 上隐藏 LoadingImage 或 LoadingPanel

python - 扩展 pandas 数据框中的行