表格样式:
-------------------------------------------------------
|序号 |固定项目|         变动项目                   |
-------------------------------------------------------
|固定部分 |固定部分| 固定部分|  “变动部分”     |
-------------------------------------------------------
|  A     |    B   |   c            |  1    | 2        |
-------------------------------------------------------
|        |        |                |       |           |
--------------------------------------------------------固定部分是不用动的,“变动部分”下面1,2标记的位置是变动的(1,2两部分的宽度是固定的,比如是300点),根据从表中读取的数据可以有从1-20不等的列,最后一行空白表示正式写入记录的起始位置,1,2部分的列名是变动的,具体值要从表中读出,如何动态生成这样的表?

解决方案 »

  1.   

    根据结果集输出tr td不就好了么
      

  2.   

    public static void main(String args[]) {
    //    InfoJMenu menu = new InfoJMenu(new JFrame());
        String fieldName[]={"姓名","年龄"};
        Hashtable data[]=new Hashtable[2];
        data[0]=new Hashtable();
        data[1]=new Hashtable();
        data[0].put("姓名","张三");
        data[0].put("年龄","24");
        data[1].put("姓名","李四");
        data[1].put("年龄","20");
        System.out.println(creatTable(fieldName,data));
      }  /**
       * 参数fieldName[]是要显示的字段名字的数组,例:
       * 如果显示姓名和年龄,那么fieldName[]={"姓名","年龄"};
       * 参数data[]是要显示的数据的Hashtable数组,按上面的例子,有两条数据显示:
       * data[0].put("姓名","张三"); data[0].put("年龄","24");
       * data[1].put("姓名","李四"); data[1].put("年龄","20");
       * 数据结构必须正确才能正确的生成表格
       */
      public static String creatTable(String fieldName[], Hashtable data[]) {
        StringBuffer result = new StringBuffer();    result.append("<table border='1'>\n");    result.append("<tr>\n");
        for (int n = 0; n < fieldName.length; n++) {
          result.append("<td>");
          result.append(fieldName[n]);
          result.append("</td>\n");
        }
        result.append("</tr>\n");    for (int i = 0; i < data.length; i++) {
          result.append("<tr>\n");
          for (int j = 0; j < fieldName.length; j++) {
            result.append("<td>");
            result.append(data[i].get(fieldName[j]));
            result.append("</td>\n");
          }
          result.append("</tr>\n");
        }
        result.append("</table>");
        return result.toString();
      }
      

  3.   

    s建议你用finereport做 用报表 排版不错 基本算是可视化操作
      

  4.   

    还是用普通的 td 啊,如果有需要,在表头上的几行加入 cols 属性进行列合并。
      

  5.   

    看看javascript 或 xml中的dom吧
    html中的任何部分都可以是动态的
      

  6.   

    根据结果集输出tr td
    |  A     |    B   |   c   
    type="radio"  输出 1 2   <tr> 
                <td width="80%" ><%=rs.getString("question")%></td>
            <td width="10%"></td>
      </tr>
       <tr> 
                <td width="100%" height="6"></td>
        </tr>
      </table>
      <table  width="100%" border="0" cellpadding="0" cellspacing="1">
              <tr > 
                <td width="25%" ><input name="answer<%=i%>" type="radio" value="5">
                  A:<%=rs.getString("keya")%></td>
            <td width="25%" >
    <input name="answer<%=i%>"  checked  type="radio" value="4">B:<%=rs.getString("keyb")%></td>
            <td width="25%" >
    <input name="answer<%=i%>"    type="radio" value="3">C:<%=rs.getString("keyc")%></td>
            <td width="25%" >
    <input name="answer<%=i%>" type="radio" value="2">D:<%=rs.getString("keyd")%></td>
      </tr>   
        </table> 
    <% }  %>
      

  7.   

    a,b,c,1,2,行是表头部分,具有和记录部分不同的样式,且该部分的汉字(需要从表中读出,长度不定)必须竖排,而且1,2部分是固定的宽度(370点)