用java的JTable实现类似Excel的报表控件(附三张效果截图)


最近在写这个报表控件,我罗列了一下已经完成的工作,基本上是照着Excel的功能来实现的
此报表控件要求能在Applet及Swing运行
以下为部分主要完成工作

1. 单元格合并与拆分。
2. 基于JTextArea的渲染器,用来实现多行输入。
3. 由于采用JTextArea作为渲染器,导致文本只能向左对齐,后来通过重载JTextArea得以实现居中,居右,字体下划线等效果:)。
4. 鼠标动态拉行高,拉行宽。
5. 发现行数一多,导致性能下降很历害,所以实现了只刷新当前可视屏幕区域。
6. 单元格属性的设定
    >背景颜色
    >前景颜色
    >字体(大小,粗斜体,下划线,删除线)
    >对角线单元格(中国式报表)
    >边框线等
7. 打印预览
8. 打印
9. 自己实现的打印设置对话框
     >打印水印
     >打印方向
     >纸张页边距
     >打印纸张页数范围
     >打印份数
     >打印时打印机的打印顺序
     >设定打印的页眉和页脚
     >放大打印或缩小打印
     等
10.往单元格加载图片,可预览和打印出来
11.套打模式,在table显示标尺,并重置行高为1cm,行宽为2cm,以方便使用者对应套打纸张
12.为单元格绘制边线
13.查找和替换
14.增加行和列,删除行和列
15.格式刷
16.排序,升和降。可设定优先排序的形式,数值优先或着是中文优先,中文按照拼音排序
17.考贝,复制和贴粘
18.插入图表,目前只实现了柱状图表
19.求和
20.各种热键组合
21.显示和隐藏table网格线

等等功能

目前在开发的功能

导入与导出
报表

计划开发
子报表

我的文章基本是在写这个table时总结出来的实践经验,希望对读者有所启发。

由于JTable本身的功能很少也很弱,网上有个开源针对JTable做了一些扩展实现

http://crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html

我参考了里边单元格合并的例子,实际上这些例子表面上是OK,用起来却不OK。举个例子吧,如果改变了任意一行行高,则例子中的合并马上OVER,所以不要迷信这些东西,什么事都要亲自试一下,现在很多网友都用这些做为例子来对待,请停止这些行为吧,误导别人可不好。
当然,不改变行高,每行都一样高,或许可以用一下。但我一试增加一行。。。我靠,无语了。

我的这个控件,用了它的思想而作了自己的实现。

软件截图



截图二



预览截图

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页