论坛首页 Java企业应用论坛

swing开发的系统

浏览 39717 次
精华帖 (10) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2010-04-05   最后修改:2010-04-05
楼上损益分析系统  的树表是不是采用了sun官方提供的一个demo版,我之前也想用树来作为table的渲染器,但结果令人沮丧,和原有系统连接不起来,并且编辑也比较麻烦,我的table还可以自动行高,然而tree作为渲染器的话很难实现不同行有不同的行高,所以后来舍弃。
0 请登录后投票
   发表时间:2010-04-05   最后修改:2010-04-05
你的损益分析系统还不错。
0 请登录后投票
   发表时间:2010-04-05  
GH0769 写道
像这样的Swing项目为什么不使用NetBeans作为开发工具呢?GUI布局方面NetBeans强大也方便很多,比如那些有大量栏位的表单,如果不用可视化设计器,拿还不麻烦死。

其实项目中从未有真正的代码来设定一个表格的栏位信息,全部是在后台定义好之后jdbc读取到这些栏位的中文名,宽度,是否可以排序,等。。 你看到的table的栏位是在table和中间层关联的时候会自动根据中间层的设定来自动生成栏位,当然也包括了改栏位的编辑器,渲染器等等。
以现在的模块化,我们界面不需要过多的设置,反而是业务逻辑处理的代码比较多,最简单的我想生成一个维护单表的数据库表只需要极短的代码就可以了。例如:

public class SystemsInit extends SingleFrame
{
public SystemsInit()
{
super();
this.initDataSet("systems", "sys_id", null, "pos", this.frame_menu_id, false);
this.initComponent();
this.initUI();

  public static void main(String args[])
  {
    SwingUtil.main(args);
    new SystemsInit();
  }
}
这样少的代码就可以实现如下的维护窗口:




表格,树等处理起来确实可以使用大量声明性的方式处理,因为GUI的布局形式比较固定,是GUI组件本身定义的。但是一些表单一般还是要人为布局吧,顶多支持一种绑定机制,将数据栏位和不同GUI栏位关联,但是GUI栏位的布局还是要人为设计吧,毕竟需求比较多样。虽然也有一些根据数据直接驱动出表单的方式,但是可能还是比较难满足多样的需求吧。
0 请登录后投票
   发表时间:2010-04-05  
对于表格我是这样处理的,比如你可以类似声明性的描述:
"面额;POSITION;Number;2",
"折溢摊价格;MARKET_RATE;Number;4"

第一个是栏位的表现形式,第二个是这个表现形式对应的数据字段名字,第三个是类型,后面是小数位数的格式等等,也可以支持更复杂的XML描述定义。

我从服务器拿到的数据解析为FieldMap,FieldMapNode这些,我实现了直接可以支持这种数据结构的GUI,比如FieldMapTable,FieldMapTable从上面所说的声明性描述定义构建,然后当你把一个FieldMap(实际的数据结构)设置到FieldMapTable时,FieldMapTable就知道如何表现FieldMap。

0 请登录后投票
   发表时间:2010-04-05  
我的想法是设计一些通用,动态的数据结构,然后其他模块围绕着这个核心展开,FieldMap,FieldMapNode这些数据结构加上一份声明性的描述到了表格,表格知道如何表现,到了导出Excel,导出Excel的模块也知道如何导出,等等。这样就围绕着这种数据结构形成一个支持生态。
0 请登录后投票
   发表时间:2010-04-05  
以前一个FieldMap的帖子。

http://www.iteye.com/topic/534249
0 请登录后投票
   发表时间:2010-04-05  
鼓掌一个,呼吁Swing的弟兄们多贴上作品,多讨论。不要让Swing沉寂。
0 请登录后投票
   发表时间:2010-04-05  
GH0769 写道
楼上损益分析系统  的树表是不是采用了sun官方提供的一个demo版,我之前也想用树来作为table的渲染器,但结果令人沮丧,和原有系统连接不起来,并且编辑也比较麻烦,我的table还可以自动行高,然而tree作为渲染器的话很难实现不同行有不同的行高,所以后来舍弃。

sun官方提供的一个demo版还是比较薄弱的,你可以参考SwingX里面内容,虽然思路是相似的,不过它还是加强了不少东西。
0 请登录后投票
   发表时间:2010-04-05  
这和Delphi、VB来做有什么区别
0 请登录后投票
   发表时间:2010-04-05  
GUI栏位的布局部分:
其实我定义了数据库表中的一列是否要显示,显示的 高,宽后直接使用通用生成函数生成详细信息。当然对于个别比较复杂的界面,那么需要硬代码来定义GUI布局。不过大部分窗口都可以通用定义。详细信息窗口全部使用gridbaglayout布局管理器
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics