我想知道是否可以使数据库列显示为JTable中的行。
从图形上看,这就是我的意思,它是一个时间表:
数据库
+--------------------+---------------------+---------------------+----------------------+ |Monday(8.30 -10.30) | Monday(10.30-12.30) | Tuesday(8.30-10.30) | Tuesday(10.30-12.30) | |---------------------------------------------------------------------------------------| |Available | Available | Unavailable | Available | +--------------------+---------------------+---------------------+----------------------+
的JTable
+--------------------+-----------------------+ |Available | Unavailable | |--------------------|-----------------------| |Monday(8.30-10.30) | Tuesday(8.30 - 10.30)| |--------------------|-----------------------| |Monday(10.30-12.30) | | |--------------------|-----------------------| |Tuesday(10.30-12.30)| | +--------------------+-----------------------+
答案 0 :(得分:2)
可能 - 是的。容易 - 可能不是。
您基本上会进行select * from [table]
次查询并迭代结果。你会想看看这些:
(我假设你知道有关查询数据库的基础知识)
因此,当您将信息添加到表格时,请使用:
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel)table.getModel();
ResultSet rs; // actually have your result set here
ResultSetMetaData meta = rs.getMetaData();
while(rs.next()){
Object[] info = new Object[meta.getColumnCount()];
for(int i = 0; i < meta.getColumnCount(); i++){
info[i] = rs.getObject(i);
}
model.addColumn("Result" + rs.getRow(), info);
}
add(table);
答案 1 :(得分:1)
将所有列名称放在List&lt; String&gt;中。
使用List构建SQL查询。
选择(List&lt; String&gt;中的逗号分隔字符串) 从表 哪里......
循环显示Available / Unavailable ResultSet
,并从List&lt; String&gt;中输入相应的列名称。在您的表模型中可用或不可用。
答案 2 :(得分:0)
做起来并不简单。你想要(假设我理解得很清楚)一个议程,日期为列和小时为行?
我认为更好的方法是根据需要多次扩展AbstractTableModel(例如DayTableModel,WeekTableModel ...)这是一个很好的例子:http://www.java2s.com/Code/JavaAPI/javax.swing.table/extendsAbstractTableModelCustomclasstype.htm
我希望我帮助过你。
编辑:不明白。无论如何,我想最好的方法是扩展AbstractTableModel(但只需一次)。