我最新用awt designer 编程
用到了table ,添加了TableColumn,
我想实现,点击每一个列的标题,就会选择整列,就像EXCEL 那样。
应该如何实现呢?

解决方案 »

  1.   

    我现在用Swing,给你一个JTable的例子吧,自己改一下就OK了
    要实现这个功能必须要自定义一个类ColumnSelectableJTable继承自JTable,把按列选择功能打开,把按行选择功能屏蔽,并增加鼠标单击事件监听就搞定,很简单吧,下面看代码:
    package com.monitor1394.tabletest;import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JTable;
    import javax.swing.table.JTableHeader;/**
     * 允许通过单击列首来选择全列的JTable
     * @author monitor
     * Created on 2010-12-23, 15:11:58
     */
    public class ColumnSelectableJTable extends JTable{
        public ColumnSelectableJTable(Object[][]items,Object[] headers){
            super(items,headers);
            setColumnSelectionAllowed(true);
            setRowSelectionAllowed(false);
            final JTableHeader header=getTableHeader();
            header.addMouseListener(new MouseAdapter(){
                //释放鼠标单击时启动
                public void mouseReleased(MouseEvent e){
                    //取消所有选择
                    if(!e.isShiftDown()) clearSelection();
                    //获得单击的位置
                    int pick=header.columnAtPoint(e.getPoint());
                    addColumnSelectionInterval(pick,pick);
                }
            });
        }
    }
    测试类如下:
    package com.monitor1394.tabletest;import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.ScrollPaneConstants;/**
     * 表格测试
     * 
     * @author monitor
     * Created on 2010-12-23, 15:10:08
     */
    public class TableTest {
        private static final Object[][] items={
            {"1001","李建生","男","[email protected]"},
            {"1001","王文福","男","[email protected]"},
            {"1001","张口要","男","[email protected]"},
            {"1001","甜美美","女","[email protected]"},
        };
        private static final Object[] headers={"ID","用户名","性别","邮件"};    public static void main(String[] args){
            JFrame frame=new JFrame("表格测试");
            ColumnSelectableJTable table=new ColumnSelectableJTable(items,headers);
            JScrollPane scroller=new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
            frame.getContentPane().add(scroller);
            frame.pack();
            frame.setVisible(true);
        }
    }我测试了没有问题,自己试试吧
      

  2.   

    JavaSwing的JTable有几个方法:setColumnSelectionAllowed(boolean columnSelectionAllowed) 
    设置是否可以选择此模型中的列。 
    setCellSelectionEnabled(boolean cellSelectionEnabled) 
    设置此表是否允许同时存在行选择和列选择。
      

  3.   


    不好意思,还是不会。swt和swing不一样呀。另外,想问一下,table里面每一行能变宽一点吗?