使用Twaver的树表时,遇到滚动条的问题

我在使用树表(TTreeTable)组件的时候,不想显示表格的表头,于是使用采用setHeader(null)的方 式,去掉了表头,但发现这样的话,表格中树的列宽无法自适应表中内容的宽度,而采用getHeader().setVisible(false)的方式来 隐藏表头的话,表头无法正常隐藏。
    那还有其他方法来隐藏树表的表头吗?要求树节点的显示宽度可以自适应节点中显示的内容长度。

答案是:

只要不将table放在JScrollPane中就不会显示表头,如果放在JPanel中,注意Layout,如果还需要滚动条,在jPanel外再套个JScrollPane

 

package swing.table;

import java.awt.BorderLayout;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import twaver.ElementAttribute;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverUtil;
import twaver.table.TTreeTable;

public class TreeTableWithoutHeaderTest {

    public static void main(String[] arg) {
        final TDataBox box = new TDataBox();
        final TTreeTable table = new TTreeTable(box);
        table.setElementClass(Person.class);

        List attributes = new ArrayList();
        ElementAttribute nameAttribute = new ElementAttribute();
        nameAttribute.setName("name");
        nameAttribute.setDisplayName("Name");
        nameAttribute.setEditable(false);
        attributes.add(nameAttribute);
       
        ElementAttribute ageAttribute = new ElementAttribute();
        ageAttribute.setClientPropertyKey("age");
        ageAttribute.setDisplayName("Age");
        ageAttribute.setEditable(false);
        attributes.add(ageAttribute);       
        table.registerElementClassAttributes(Person.class, attributes);

        box.addElement(new Person("Sam", 89));
        box.addElement(new Person("Tom", 12));
        box.addElement(new Person("Lisa", 20));
        for(int i=0;i<10;i++){
            box.addElement(new Person("dSS"+i,i));
        }
        final Person father=new Person("Pete", 30);
        Person sun=new Person("Pete's son", 10);
        father.addChild(sun);
        box.addElement(father);
        box.addElement(sun);
        table.getTree().setRootVisible(true);
        table.getTree().expandAll();
       
        //table in JScrollPane with Borderlayout.center
//        showFrame("", new JScrollPane(table));
       
        //table in jPanel with Borderlayout.center
//        showFrame("", table);
       
        //table in jPanel
        JPanel mainPane=new JPanel();
        mainPane.add(table);
        showFrame("", mainPane);
    }
   
    public static JFrame showFrame(String title, Component component) {
        JFrame frame = new JFrame();
        frame.setTitle(title);
        frame.getContentPane().add(component, BorderLayout.CENTER);
        frame.setSize(400, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        TWaverUtil.centerWindow(frame);
        frame.setVisible(true);
        return frame;
    }

    public static class Person extends Node {
        public Person(String name, int age) {
            this.setName(name);
            this.putClientProperty("age", age);
        }
        public int getAge(){
            return Integer.valueOf(this.getClientProperty("age").toString()).intValue();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值