使用 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 (将#修改为@)