我写了一个方法,创建了我的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);
}
答案 0 :(得分:2)
简短的回答是它应该有效。你不应该被要求做任何额外的行动。
代码的方式,我认为没有任何理由不工作。我刚用自己的例子试过它,效果很好。
但是,请确保以下内容:
JTable
已正确添加到JScrollPane
JScrollPane
已正确添加到面板JTable
答案 1 :(得分:0)
您可以使用简单的代码“欺骗”并模拟滚动,也可以在填充表格后重新绘制框架。也许请查看:JTable How to refresh table model after insert delete or update the data.
答案 2 :(得分:0)
表格不可见
我检查了代码中的每一行,并且显示我设置的表格不可见。 只有当我添加数据并将其设置为visibile时。所以我看不到我的数据并选择行。