关于table表的列项选择 我最新用awt designer 编程用到了table ,添加了TableColumn,我想实现,点击每一个列的标题,就会选择整列,就像EXCEL 那样。应该如何实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我现在用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); }}我测试了没有问题,自己试试吧 JavaSwing的JTable有几个方法:setColumnSelectionAllowed(boolean columnSelectionAllowed) 设置是否可以选择此模型中的列。 setCellSelectionEnabled(boolean cellSelectionEnabled) 设置此表是否允许同时存在行选择和列选择。 不好意思,还是不会。swt和swing不一样呀。另外,想问一下,table里面每一行能变宽一点吗? 自定义类加载器 使用paint()方法重绘的问题 java正则是否有非表达式 请问一个java调用vc编写的动态库的问题,除JNI外是不是还有其它的办法? Hibernate问题 时好时坏 解决不了啦 BorderLayout布局 刚刚发错版面了,谁帮忙看看两个字符串处理的问题,在线等谢谢 高分求教思路问题?关于图片插入问题 JAVA问题,小弟弟在线等高手做打,谢谢 Rational Rose 求教 用键盘控制FLASH游戏选项 导入包
要实现这个功能必须要自定义一个类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);
}
}我测试了没有问题,自己试试吧
设置是否可以选择此模型中的列。
setCellSelectionEnabled(boolean cellSelectionEnabled)
设置此表是否允许同时存在行选择和列选择。
不好意思,还是不会。swt和swing不一样呀。另外,想问一下,table里面每一行能变宽一点吗?