不能让JTable出现在GUI上.我错过了什么?



我试图添加一个表到我的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++;
    }
}

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

正确的答案是:这是你不应该使用null布局的又一个原因。时期。

使用null布局使得GUI非常不灵活,虽然它们在一个平台上看起来很好,但在大多数其他平台或屏幕分辨率上看起来很糟糕,并且很难更新和维护。相反,你会想要学习布局管理器,然后是嵌套的jpanel,每个jpanel都使用自己的布局管理器来创建令人愉悦和复杂的GUI,这些GUI在所有操作系统上看起来都很好。

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


编辑
还要注意,将JTable添加到两个容器中,一个是JPanel,一个是JScrollPane。不要这样做。只将它添加到JScrollPane中,然后将scrollPane添加到您希望的任何位置。

相关内容

最新更新