【发布时间】:2024-01-05 19:55:01
【问题描述】:
我正在尝试向我的 GUI 添加一个表格,但是当我将框架的布局从 GridLayout 更改为 NULL 时,它从 GUI 中消失了?
以下用于创建 GUI 的代码:
public SalariedEmployeeGUI() {
setLayout(null);
getContentPane().setBackground(Color.WHITE);
JPanel salariedEmpTablePanel = new JPanel();
salariedEmpTablePanel.setLayout(null);
salariedEmpTablePanel.setLocation(60,110);
salariedEmpTablePanel.setSize(550,390);
salariedEmpTablePanel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(EtchedBorder.RAISED,
Color.BLUE, Color.DARK_GRAY), "Salaried Employee Table"));
salariedEmpTablePanel.setBackground(Color.WHITE);
sEmpTable = new JTable();
sEmpTable.setPreferredScrollableViewportSize(new Dimension(550, 390));
JScrollPane scrollPane = new JScrollPane(sEmpTable);
salariedEmpTablePanel.add(sEmpTable);
add(salariedEmpTablePanel);
setupTable();
loadTable();
setupTable 和 loadTable 方法如下.. 但我认为它们工作正常:
private void setupTable() {
payrollQueries = new PayrollQueries();
tableModel = new DefaultTableModel();
tableModel.setColumnCount(5);
tableModel.setColumnIdentifiers(new String[]{"First Name",
"Last Name", "Type", "SSN", "Weekly Salary"});
sEmpTable.setModel(tableModel);
}
private void loadTable() {
entries = payrollQueries.getSalariedEmployee();
int tableRow = 0;
tableModel.setNumRows(entries.size());
System.out.println("number of salaries employees: " + entries.size());
for (SalariedEmployee se : entries) {
tableModel.setValueAt(se.getFirstName(), tableRow, 0);
tableModel.setValueAt(se.getLastName(), tableRow, 1);
tableModel.setValueAt(se.getSocialSecurityNumber(), tableRow, 2);
tableModel.setValueAt(se.geteType(), tableRow, 3);
tableModel.setValueAt(se.getWeeklySalary(), tableRow, 4);
tableRow++;
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!不要使用
null布局。像素完美布局是现代 UI 设计中的一种错觉,您无法控制字体、DPI、渲染管道或其他会改变组件在屏幕上渲染方式的因素。 Swing 旨在与布局管理器一起克服这些问题。如果您坚持忽略这些功能并违背 API 设计,请准备好迎接许多令人头疼的问题和永无止境的辛勤工作......
标签: java swing jtable layout-manager null-layout-manager