关于JTable复杂化

时间:2012-10-17 13:23:43

标签: java swing calendar jtable

我想知道是否可以使数据库列显示为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)|                       |
+--------------------+-----------------------+

3 个答案:

答案 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(但只需一次)。