0

我写了一个方法,它创建了我的 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);
}
4

3 回答 3

2

简短的回答是它应该可以工作。不应要求您执行任何额外操作。

代码的方式是,我看不出有任何理由让它不起作用。我刚刚用我自己的示例进行了尝试,并且效果很好。

但是,请确保以下几点:

  • 被正确JTable添加到JScrollPane
  • JScrollPane正确添加到面板
  • 您正在将模型设置在右侧JTable
于 2012-10-28T16:19:57.040 回答
0

表不可见

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

于 2012-11-06T19:39:33.553 回答
0

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

于 2012-10-28T16:14:51.740 回答