1

我想知道是否可以使数据库列在 JTable 中显示为行。

从图形上看,这就是我的意思,它是一个时间表:

数据库

+--------------------+----------+------ -------------+----------+
|星期一(8.30 -10.30) | 星期一(10.30-12.30) | 周二(8.30-10.30) | 周二(10.30-12.30) |
|------------------------------------------------- --------------------------------------------------|
|可用 | 可用 | 不可用 | 可用 |
+--------------------+----------+------ -------------+----------+

+--------------------+------------------------+
|可用 | 不可用 |
|--------------------|------------|
|星期一(8.30-10.30) | 周二(8.30 - 10.30)|
|--------------------|------------|
|星期一(10.30-12.30) | |
|--------------------|------------|
|星期二(10.30-12.30)| |
+--------------------+------------------------+
4

3 回答 3

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);
于 2012-10-17T13:42:40.250 回答
1
  • 将所有列名放在 List<String> 中。

  • 使用 List 构造您的 SQL 查询。

    从表中选择(来自 List<String> 的逗号分隔字符串)...

  • 遍历 Available / Unavailable ResultSet,并将 List<String> 中的相应列名作为可用或不可用放入您的表模型中。

于 2012-10-17T14:02:59.507 回答
0

做起来并不简单。您想要(假设我理解得很好)议程,以天为列,以小时为行?

我认为更好的方法是根据需要多次扩展 AbstractTableModel(例如 DayTableModel、WeekTableModel ......)这是一个很好的例子:http ://www.java2s.com/Code/JavaAPI/javax.swing.table /extendsAbstractTableModelCustomclasstype.htm

我希望我对你有所帮助。

编辑:不明白。无论如何,我想最好的方法是扩展 AbstractTableModel (但只有一次)。

于 2012-10-17T13:46:45.160 回答