JTable数据仅在滚动后显示

时间:2012-10-28 16:08:11

标签: java swing jtable defaulttablemodel

我写了一个方法,创建了我的DefaultTableModel,然后我将添加我的记录。 当我将模型设置为JTable时,数据行为空白。滚动后,数据显示正确。

如何避免这种情况并从第一时间开始显示数据?

编辑:我导入了javax.swing.table.DefaultTableModel - >这是对的吗?

private DefaultTableModel _dtm;

private void loadTable(Vector<Member> members) {
    loadTableModel();

    try {
        lbl_state.setText("Please wait");

        for (Member actMember : members) {
            String gender = "";
            if (actMember.getGender() == MemberView.MEMBER_MALE) {
                gender = "männlich";
            } else {
                gender = "weiblich";
            }

            _dtm.addRow(new Object[]{
                        actMember.getNname(),
                        actMember.getVname(),
                        actMember.getCity(),
                        actMember.getStreet(),
                        actMember.getPlz(),
                        actMember.getMail(),
                        actMember.getPhonenumber(),
                        actMember.getBirthdayString(),
                        actMember.getStartDateString(),
                        gender,
                        actMember.getBankname(),
                        actMember.getAccountnumber(),
                        actMember.getBanknumber(),
                        actMember.getGroup().toString(),
                        (actMember.hasAccess() ? "JA" : "NEIN"),
                        actMember.getWriteDateString(),
                        (actMember.hasDrinkAbo() ? "JA" : "NEIN")
                    });
        }
    } catch (Exception ex) {
        System.err.println(ex.getMessage());
    }

    tbl_results.setModel(_dtm);
}

private void loadTableModel() {
    _dtm = new DefaultTableModel(new Object[]{"Nachname",
                "Vorname",
                "Ort",
                "Straße",
                "PLZ",
                "E-Mail",
                "Telefon",
                "Geburtsdatum",
                "Beitrittsdatum",
                "Geschlecht",
                "Bankname",
                "Kontonummer",
                "Bankleitzahl",
                "Gruppe",
                "hat Zugriff",
                "Einschreibdatum",
                "Getränkeabo"}, 0);

    tbl_results.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}

3 个答案:

答案 0 :(得分:2)

简短的回答是它应该有效。你不应该被要求做任何额外的行动。

代码的方式,我认为没有任何理由不工作。我刚用自己的例子试过它,效果很好。

但是,请确保以下内容:

  • JTable已正确添加到JScrollPane
  • JScrollPane已正确添加到面板
  • 您将模型设置为右侧JTable

答案 1 :(得分:0)

您可以使用简单的代码“欺骗”并模拟滚动,也可以在填充表格后重新绘制框架。也许请查看:JTable How to refresh table model after insert delete or update the data.

答案 2 :(得分:0)

表格不可见

我检查了代码中的每一行,并且显示我设置的表格不可见。 只有当我添加数据并将其设置为visibile时。所以我看不到我的数据并选择行。