我想创建一个展开和折叠面板列表,如下图所示:
我还没有找到任何摆动组件,所以我开始创造这样的东西。 我试图把按钮放在另一个下面,这填补了可用的宽度,但是并没有真正起作用。我只能看到最后添加的一个。
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);
答案 0 :(得分:12)
您可以查看具有以下优势的SwingX项目中的JXTaskPaneContainer
和JXTaskPane
:
JPanel
一样是组件,所以不需要额外的努力来处理它们。如果您不喜欢任务窗格并希望自己实现某些功能,则可以使用JXCollapsiblePane
(也可在SwingX API中使用)。
检查SwingLabs Demos以获取一整套SwingX组件演示。
答案 1 :(得分:4)
答案 2 :(得分:2)
您正在寻找的组件是手风琴。看看这个问题: Accordion for Swing?
至于您的代码 - 您只能看到最后一个代码,因为您要将它们全部添加到具有BorderLayout
的面板,其中BorderLayout.North
作为布局约束。每一个都删除以前添加的面板。尝试切换到另一个布局 - 例如BoxLayout
。
答案 3 :(得分:0)
您必须在布局面板中放置一个网格面板。因此,在布局面板的“北”部分中,只需添加一栏的抓取面板和所需的原始数量