gpt4 book ai didi

java - 无法让 JTable 出现在 GUI 上..我错过了什么?

转载 作者:行者123 更新时间:2023-12-01 18:31:23 25 4
gpt4 key购买 nike

我正在尝试向 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++;
}
}

最佳答案

简短的回答是,这是因为在使用空布局时,您负责指定添加的所有组件的确切位置和大小。

正确答案是:这是不应使用空布局的又一个原因。期间。

使用空布局会导致 GUI 非常不灵活,虽然它们在一个平台上看起来不错,但在大多数其他平台或屏幕分辨率上看起来很糟糕,而且很难更新和维护。相反,您需要研究和学习布局管理器,然后嵌套 JPanel,每个 JPanel 使用自己的布局管理器来创建在所有操作系统上看起来都不错的令人愉悦且复杂的 GUI。

布局管理器教程可以在这里找到:Layout Manager Tutorial

<小时/>

编辑
另请注意,您将 JTable 添加到两个容器:JPanel 和 JScrollPane。不要这样做。只需将其添加到 JScrollPane,然后将scrollPane 添加到您想要的任何位置。

关于java - 无法让 JTable 出现在 GUI 上..我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24006030/

25 4 0
文章推荐: java - 将 List 分解为一组已知派生类型的列表