当前位置:  技术问答>java相关

如何在jtable中隐藏某些行(不是删除行),要多少分给多少分,up有分

    来源: 互联网  发布时间:2015-08-24

    本文导语:  如题,谢谢大家了。 | 我曾经变写过一个model, 可以实现你的要求,但是效果不好看,我后来也没有正式用它,你如果要可以发给你。 | 有一个变通的办法,可行不可行没试...

如题,谢谢大家了。

|
我曾经变写过一个model, 可以实现你的要求,但是效果不好看,我后来也没有正式用它,你如果要可以发给你。

|
有一个变通的办法,可行不可行没试过:
表对数据的显示,是通过Model的方法public Object getValueAt(int row, int col)来得到某行某列的数据的,所以在你自己的Model中可以改变次方法,如果你想隐藏几行,就在数据Vector或数组中添加几个空行(以免以后向下跳行时会出现索引异常);然后在getValueAt中得到由另一个自定义方法传过来的要隐藏的行的行号的数组或其他的数据结构,然后一个循环,如果参数row==这里边的某个行号,有一个全局变量allrow=row;此时应该allrow+=1;然后返回super.getValueAt(allrow,col)即可。也就是说控制数据时就是让他越过要隐藏的行直接取下一行,只是在表底部会出现没有数据的行。

|
最好自己实现一个Model,这是最符合设计的,这也是Swing小组所建议的。Model是很好用的,不知道你是否知道如何在表格中实现树形的表格呢?多查点资料,掌握它,这是很有用的。而且,由于自己实现的Model,性能也不是问题。


注意几个设计要点:
对于getValueAt()方法的实现要简洁,原因是每一次的paint都将调用此方法,如果算法过于耗时将会影响性能,也要控制在其内尽量的不要抛出Exception。


|
如果视觉效果要求不是很高,可以通过setRowHeight(int row, int rowHeight) 来实现,但最小高度是1,不知道为什么?这样如果隐藏多的话就很难看,但比较方便。

否则只能先删除数据,再恢复数据了。

|
1.我想这不能是界面元素JTable的任务了.他负责的是把你要的数据(model)给按照你设定的格式(cellRenderer)给展现出来.你给10行,他决不显示9行,如果你要只显示9行,我想还是从model着手去想.

2. 假定你有100行数据,可是你想隐藏其中10行,这时我的想法就是你另外找个地方(比如一个vector或者什么的)把你要隐藏的数据从model中"搬出来",其实就相当于从model中删除,只是在有个你知道的地方保存了而已.这时,JTable很听话,只会把你剩下的90行数据显示出来.至少达到了隐藏的目的.

3.当然,隐藏意味着在某些特殊时刻还是要显示出来,那么在你需要的时候,从你的那个备份隐藏的地方把那10行数据拿出来,再添加到model中去,这样JTable认为model被修改,更新显示,自然就会成100行的数据.

所以我想你要说的隐藏其实是隐藏数据,我的建议就是对model进行手术,这样你甚至可以在不同的地方保留不同的数据,需要某些只要拿出来set给model,不需要的时候从model删除就可以.而不仅仅是jTable去考虑

个人想法,欢迎讨论.


|
/**
   * 隐藏JTable中一列
   * @param ptable
   * @param index 要隐藏的列,0表示第一列,
   * 注意隐藏某列后,该列原来在后面的列,如隐藏第0列后,原来的第1列就变成了第0列
   */
  public static void hideColumn(JTable ptable, int index)
  {
    if (index = ptable.getColumnCount())
      return;
    TableColumnModel columnModel = ptable.getColumnModel();
    TableColumn column = columnModel.getColumn(index);
    ptable.removeColumn(column);
  }

楼上的几位说的对,你的出发点有误,不过,以上的程序可以实现你的要求

|
大家都是高手,其实你可以看看关于jtable的帮助,写的很好,你要的功能也可实现。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何删除或者增加JTABLE中的行?
  • 用java JTable做了一个删除数据库的小程序,想将它拿到其它机器上用,如何不用安装JDK就能运行?请指点,谢谢。
  • 继承于AbstractTableModel的JTable如何实现动态删除一行?谢谢!
  • java命名空间javax.swing类jtable的类成员方法: jtable定义及介绍
  • JTable:如何在JTable中加入新的column和加入的row,如何在JTable中设置指定坐标上的值?
  • java命名空间javax.swing类jtable.accessiblejtable的类成员方法: jtable.accessiblejtable定义及介绍
  • 一个比较笨的问题:如何用两个Vector对象动态生成一个JTable?及从JTable里取得数据。
  • java命名空间javax.swing类jtable.accessiblejtable.accessiblejtablecell的类成员方法: jtable.accessiblejtable.accessiblejtablecell定义及介绍
  • 初始化jtable时,我只想生成一个只有表头,即列名,还没有数据行的jtable。该如何实现?
  • java命名空间javax.swing类jtable的类成员方法: selectionbackground定义及介绍
  • JTABLE的难题:我想在鼠标右键点击JTABLE时被点中的那一行被选中,如何实现?
  • java命名空间javax.swing类jtable的类成员方法: configureenclosingscrollpane定义及介绍
  • JTable里面点击cell下拉JTable
  • java命名空间javax.swing类jtable的类成员方法: setsurrendersfocusonkeystroke定义及介绍
  • 关于JTable:选择表里的一行,要求新弹出的一窗口里面TextField显示这行各个字段的内容,JTable有这样的ActionListener吗?
  • java命名空间javax.swing类jtable的类成员方法: getmodel定义及介绍
  • JTable的刷新问题!
  • java命名空间javax.swing类jtable的类成员方法: getrowcount定义及介绍
  • 怎样在JTable中得到和设置每个单元的值,给20分,大虾教我!
  • java命名空间javax.swing类jtable的类成员方法: getaccessiblecontext定义及介绍
  • 求救:如何在JTable中动态添加一行?
  • java命名空间javax.swing枚举jtable.printmode的类成员方法: normal定义及介绍
  • java中查询的数据库记录如何在JTable控件中显示?
  • java命名空间javax.swing类jtable的类成员方法: gettooltiptext定义及介绍
  • 如何得到JScrollPane中的JTable


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3