我正在尝试将数据库中的一些数据(我使用Oracle的SQL Developer)加载到java中的JTable中。我把数据库中的数据放在Vector of Vector中,这是我在一个名为DBJobs的类中加载的方法:
public Vector load() {
try {
Vector tableData = new Vector();
Conn con = new Conn();
con.openConn();
con.statement = con.dbConn.createStatement();
ResultSet rs = con.statement.executeQuery("Select * from Jobs");
while (rs.next()) {
Vector<Object> row = new Vector<Object>();
row.add(rs.getString("Job_ID"));
row.add(rs.getString("Job_Title"));
row.add(rs.getString("Parent_Job_ID_1"));
row.add(rs.getString("Parent_Job_ID_2"));
row.add(rs.getString("Description"));
tableData.add(row);
}
con.closeConn();
return tableData;
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}
然后我尝试将它们填充到JTable中,这是我用另一个类的编辑器创建的:
private void populateJobsTable() {
Vector<String> tableHeader = new Vector<String>();
tableHeader.add("Job ID");
tableHeader.add("Job Name");
tableHeader.add("Parent Job ID 1");
tableHeader.add("Parent Job ID 2");
tableHeader.add("Description");
Vector tableData = dbJobs.load();
tblJobs.setModel(new DefaultTableModel(tableData, tableHeader));
}
但我能看到的只是表格中的一行数据。我已经尝试打印Vector有多少数据以及Table有多少行,它们都返回49,这是我数据库中的数据量。那么为什么我的表只显示1个数据?
编辑: 我认为这是生成JTable的代码:
tblJobs = new javax.swing.JTable();
tblJobs.setFont(new java.awt.Font("Tempus Sans ITC", 0, 14)); // NOI18N
tblJobs.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null}
},
new String [] {
"Job Name"
}
) {
Class[] types = new Class [] {
java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
tblJobs.setPreferredSize(new java.awt.Dimension(225, 16));
jScrollPane5.setViewportView(tblJobs);
if (tblJobs.getColumnModel().getColumnCount() > 0) {
tblJobs.getColumnModel().getColumn(0).setResizable(false);
}
答案 0 :(得分:1)
首先,这不是<div *ngFor="let a of a">
<template [ngIf]="a.column=='1'">
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='1'">
Block 1 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='2'">
Block 2 in column 1{{b.name}}
</template>
</div>
<div *ngFor="let b of a">
<template [ngIf]="b.blockrow=='3'">
Block 3 in column 1{{b.name}}
</template>
</div>
</template>
</div>
。该代码是如何完成的?我们如何编译和测试该代码?你没看过我的评论???
我建议您摆脱IDE并学习如何手动创建GUI。使用自定义TableModel生成JTable的IDE有什么意义。该代码完全无用,因为您随后使用创建自己的TableModel并使用setModel(...)方法替换IDE创建的模型。
MCVE
以上代码看起来很可疑。您不应该在Swing组件上设置首选大小。表的大小看起来一次只显示一行。
这不是问题,那么在发布适当的tblJobs.setPreferredSize(new java.awt.Dimension(225, 16));
之前,我将不再有任何建议。每个问题都应该有MCVE
,因此我们不会花时间猜测您可能会做什么或不做什么。