我想创建一个展开和折叠面板列表,如下图所示:
我还没有为此找到任何 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);
最佳答案
您可以查看来自SwingX 的JXTaskPaneContainer
和JXTaskPane
具有以下优点的项目:
- 它们就像
JPanel
一样是组件,因此使用它们不需要额外的努力。 - 与 Accordion 不同,您可以同时展开多个面板 时间。
- 它们对折叠/展开事件有很酷和流畅的效果。
- 与树/树表不同,您不必弄乱 TreeModel也不TreeTableModel根本。树和树表也是旨在以分层形式显示数据的组件,而不是向其中添加组件。
如果您不喜欢任务 Pane 并想自己实现一些东西,那么您可以使用 JXCollapsiblePane
(也可以在 SwingX API 中使用)。
检查 SwingLabs Demos一套完整的 SwingX 组件演示。
截图
关于java - 如何使用 swing 创建可扩展面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703056/