Java 动态添加JPanel
我想生成多个带有标题、描述和详细信息按钮的面板,这是一般结构: 但是,当我将此代码放入for循环时,它总是添加最后一项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(
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());
}
}