0

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++;
    }
}
4

1 に答える 1

4

簡単に言えば、null レイアウトを使用する場合、追加されたすべてのコンポーネントの正確な位置とサイズを指定する必要があるためです。

正解は次のとおりです。これが、null レイアウトを使用すべきでないもう 1 つの理由です。限目。

null レイアウトを使用すると、あるプラットフォームでは見栄えがよくても、他のほとんどのプラットフォームや画面解像度では見栄えが悪く、更新と保守が非常に困難な、非常に柔軟性のない GUI になります。代わりに、レイアウト マネージャーを学習して学習し、JPanel をネストして、それぞれ独自のレイアウト マネージャーを使用して、すべての OS で見栄えの良い複雑な GUI を作成する必要があります。

レイアウト マネージャーのチュートリアルは、ここにあります:レイアウト マネージャーのチュートリアル


編集
また、JTable を JPanel と JScrollPane の 2 つのコンテナに追加していることにも注意してください。こんなことしないで。それを JScrollPane に追加してから、必要な場所に scrollPane を追加します。

于 2014-06-03T02:07:23.247 に答える