微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java Swing GroupLayout 从 SQL 数据库创建数据表

如何解决使用 Java Swing GroupLayout 从 SQL 数据库创建数据表

我有一个项目,我想使用 GroupLayout 将 sql 数据库的值映射到 JPanel。我无法弄清楚为什么我的代码会做它所做的事情。以下是我针对特定类的代码


import javax.swing.*;
import java.awt.*;

public class databaseScreen extends JPanel{
    private controller controller;
    private calculator calculator = new calculator();
    private createDB createDB = new createDB();
    JLabel pid = new JLabel();
    JLabel panelName = new JLabel();
    JLabel panelEff = new JLabel();
    JLabel lastUpdated = new JLabel();
    JLabel source = new JLabel();
    public databaseScreen(controller controller){
        this.controller=controller;
        databaseParameters();
    }
        private void databaseParameters(){
            GroupLayout layout = new GroupLayout(this);
            this.setLayout(layout);
            layout.setautocreateGaps(true);
            layout.setautocreateContainerGaps(true);

            GroupLayout.ParallelGroup pidGroupH = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
            GroupLayout.ParallelGroup nameGroupH = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
            GroupLayout.ParallelGroup effGroupH = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
            GroupLayout.ParallelGroup updGroupH = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
            GroupLayout.ParallelGroup sourceGroupH = layout.createParallelGroup(GroupLayout.Alignment.CENTER);

            for(int j=0;j<createDB.getTableSize();j++){
                pid.setText(String.valueOf(createDB.getPid(j)));
                panelName.setText(createDB.getPanelName(j));
                panelEff.setText(String.valueOf(createDB.getPanelEff(j)));
                lastUpdated.setText(createDB.getLastUpdated(j));
                source.setText(createDB.getSource(j));
                pidGroupH.addComponent(pid);
                nameGroupH.addComponent(panelName);
                effGroupH.addComponent(panelEff);
                updGroupH.addComponent(lastUpdated);
                sourceGroupH.addComponent(source);
            }

            layout.setHorizontalGroup(
                    layout.createSequentialGroup()
                            .addGroup(pidGroupH)
                            .addGroup(nameGroupH)
                            .addGroup(effGroupH)
                            .addGroup(updGroupH)
                            .addGroup(sourceGroupH)
            );

            GroupLayout.SequentialGroup verticalGroups = layout.createSequentialGroup();

            for(int j=0;j<createDB.getTableSize();j++){
                pid.setText(String.valueOf(createDB.getPid(j)));
                panelName.setText(createDB.getPanelName(j));
                panelEff.setText(String.valueOf(createDB.getPanelEff(j)));
                lastUpdated.setText(createDB.getLastUpdated(j));
                source.setText(createDB.getSource(j));
                verticalGroups
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                            .addComponent(pid)
                            .addComponent(panelName)
                            .addComponent(panelEff)
                            .addComponent(lastUpdated)
                            .addComponent(source))
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                            .addGap(20,20,20)
                        );
            }

            layout.setVerticalGroup(
                verticalGroups
            );

        }
        
}

get(variable) 函数正确接收基于因子 j 的值,我通过创建一个 main 并通过相同的 for 循环打印它们的值来测试它。但是,在屏幕上显示结果时,尽管结果位于布局的 VerticalGroup 中的不同 ParallelGroup 中,但结果似乎彼此堆叠。这是屏幕外观的屏幕截图:

https://i.stack.imgur.com/28G6b.png

任何建议将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。