Java 动态添加JPanel

Java 动态添加JPanel,java,swing,Java,Swing,我想生成多个带有标题、描述和详细信息按钮的面板,这是一般结构: 但是,当我将此代码放入for循环时,它总是添加最后一项 Panel panel_1 = new Panel(); panel_1.setBounds(23, 134, 378, 208); JLabel lblNewLabel_2 = new JLabel("desc"); lblNewLabel_2.setBounds(0, 69, 189, 69); JButton btnNewButton_2 = new JButton(

我想生成多个带有标题、描述和详细信息按钮的面板,这是一般结构:

但是,当我将此代码放入for循环时,它总是添加最后一项

Panel panel_1 = new Panel();
panel_1.setBounds(23, 134, 378, 208);

JLabel lblNewLabel_2 = new JLabel("desc");
lblNewLabel_2.setBounds(0, 69, 189, 69);

JButton btnNewButton_2 = new JButton("Details");
btnNewButton_2.setBounds(104, 139, 189, 69);
panel_1.setLayout(null);

JLabel lblPrv = new JLabel("title");
lblPrv.setBounds(104, 0, 189, 69);
panel_1.add(lblPrv);
panel_1.add(lblNewLabel_2);

JLabel label_1 = new JLabel("");
label_1.setBounds(0, 69, 189, 69);
panel_1.add(label_1);

panel_1.add(btnNewButton_2);

有什么建议吗?

以下是如何将多个面板相邻放置的示例:


您应该选择最适合您情况的布局管理器。

请不要在标题中添加标签。我为您删除了它们。使用布局管理器的组合,有关更多详细信息,请参阅Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或者与布局填充和边框一起。我想生成多个具有标题描述和详细信息按钮的面板,使用带有适当ListCellRenderer的JList。每次如何换行?如果我想修改某个面板的jlabels文本?@Fr4ncx保留对标签的引用并调用其setText方法。@Fr4ncx你说的是不可能的一个组件只能添加到一个容器中。您是否需要在运行时更改文本,或者是否有要加载的预定义文本?
public class Example extends JFrame {

    Example() {

        setLayout(new FlowLayout());
        for (int i = 0; i < 4; i++)
            add(new MyPanel());

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    class MyPanel extends JPanel {

        MyPanel() {

            setLayout(new BorderLayout());
            add(new JLabel("title", SwingConstants.CENTER), BorderLayout.PAGE_START);
            add(new JLabel("<html>WWWWWW WWWWWWW<p>WWWWWWWWW<p>RRRRRRR RRRRR RRRRRRR"));
            add(new JButton("Details"), BorderLayout.PAGE_END);
        }
    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> new Example());
    }
}