问题描述
我有一个项目,我想使用 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 中,但结果似乎彼此堆叠。这是屏幕外观的屏幕截图:
任何建议将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)