java - 使用netbeans根据数据库添加jpanel的动态

标签 java swing netbeans jpanel

我正在开发一个应用程序,只要数据库中的某个表上有一行,我就需要将 jpanel 添加到 jframe 中。问题是我用 netbeans 制作了我想要的接口(interface),但它看起来像是静态的,我找不到在代码中使用 while 循环的位置。这是代码:我要动态添加的 jpanel 称为 list_ligne.get(i)

  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
                    getContentPane().setLayout(layout);
                    layout.setHorizontalGroup(
                        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup()
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(idPapier_lb)
                                    .addGap(53, 53, 53)
                                    .addComponent(titre_lb)
                                    .addGap(30, 30, 30)
                                    .addComponent(proprietaire_lb)
                                    .addGap(94, 94, 94)
                                    .addComponent(lien_lb)
                                    .addGap(94, 94, 94)
                                    .addComponent(confidentialite_lb))
                                .addGroup(layout.createSequentialGroup()
                                    .addContainerGap()
                                    .addComponent(list_lignes.get(2), javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                            .addContainerGap())
                            .addGroup(layout.createSequentialGroup()
            .addGap(304, 304, 304)
            .addComponent(ajouter)
            .addGap(85, 85, 85)
            .addComponent(deconnexion)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    );
                    layout.setVerticalGroup(
                            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(44, 44, 44)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(idPapier_lb)
                                    .addComponent(titre_lb)
                                    .addComponent(proprietaire_lb)
                                    .addComponent(lien_lb)
                                    .addComponent(confidentialite_lb))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(list_lignes.get(2), javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 99, Short.MAX_VALUE)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(ajouter)
                                        .addComponent(deconnexion))
                                    .addContainerGap())
                        );
                pack();

所需输出的图像:

enter image description here

最佳答案

问题:GroupLayout 布局管理器(我相信 NetBeans 代码生成将其用作其默认布局)相当严格,并且不容易接受在运行时添加新组件。

解决方案:不要让您的接收容器使用 GroupLayout,而是让它使用一种更灵活的布局,允许添加其他组件,例如 GridLayout 或 BoxLayout。请注意,您可以告诉 NetBeans GUI 构建器,这是您希望容器之一使用的布局。

顺便说一句,我想知道您是否真正想做的是向 JTable 添加一行。

<小时/>

编辑
关于您的评论:

i didn't want to use JTable, it's like a formular (i wanted to add an image of it but they didn't let me) but how do i tell netbeans that i want to use GridLayout or BoxLayout rather than GroupLayout?

我不使用 NetBeans 或代码生成,但是如果您向 GUI 添加一个 JPanel(需要一个 JPanel 来容纳其他组件),我相信如果您右键单击该 JPanel,您将有能力更改其属性,包括其布局管理器的属性。 NetBeans 还允许您通过其他方式更改它所创建的组件的属性,因此您需要研究一下。

关于java - 使用netbeans根据数据库添加jpanel的动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823511/

相关文章:

java - 更改 root 设备上的日期 (Android M)

java - 如何在可能为空的对象上输出字符串属性

java - jMenuItem.addMouseListener(this) 上的错误

java - 搜索 JList

Java Swing 错误渲染 GUI 元素(Windows 8.1)?

java - 致命异常 : main java. lang.VerifyError : net. sourceforge.jtds.jdbc.TdsCore

java - CDI - Bean 名称不明确

java - 从 JTextarea 获取文本到 OutputStream 或将文本打印到控制台

java - 在 Netbeans 中更改 Java EE 版本

c - 在 pkg-config 搜索路径中找不到包检查