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

Ite*_*tor 7 java swing expand

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

展开和折叠面板

我没有找到任何摆动组件,所以我开始创建这样的东西.我试图把按钮放在另一个下面,这填补了可用的宽度,但是并没有真正起作用.我只能看到最后添加的一个.

    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);
Run Code Online (Sandbox Code Playgroud)

dic*_*c19 12

你可以去看一下JXTaskPaneContainer,并JXTaskPaneSwingX项目,它具有以下优点:

  • 它们就像一个组件,JPanel所以不需要额外的工作就可以使用它们.
  • 与手风琴不同,您可以随时扩展多个面板.
  • 它们对折叠/扩展事件具有冷静和平滑的效果.
  • 与树/树表不同,您根本不需要使用TreeModelTreeTableModel.树和树表也是用于以分层形式显示数据的组件,而不是向其中添加组件.

如果您不喜欢任务窗格并希望自己实现某些功能,那么您JXCollapsiblePane也可以使用(也可以在SwingX API中使用).

检查SwingLabs演示,获取一整套SwingX组件演示.

截图

在此输入图像描述