知识大全 自定义jtable 实现排序 windows式多选习惯
Posted 类型
篇首语:勿以恶小而为之,勿以善小而不为。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自定义jtable 实现排序 windows式多选习惯相关的知识,希望对你有一定的参考价值。
package browser;
import java awt Component;
import java awt Dimension;
import java awt Font;
import java awt Point;
import java awt dnd DnDConstants;
import java awt event MouseEvent;
import javax swing JTable;
import javax swing ListSelectionModel;
import javax swing RowSorter;
import javax swing event ListSelectionEvent;
import javax swing event MouseInputListener;
import javax swing plaf basic BasicTableUI;
import javax swing table DefaultTableCellRenderer;
import javax swing table TableRowSorter;
/**
* 自定义jtable 实现排序 windows式多选习惯 斑马线 ToolTip
* @author dl
*/
public class JMyTable extends JTable
public int m_nRow = ; /**当前列号*/
public int[] m_nRows = null; /**当前选中的多个序号*/
public JMyTableModel model;
public RowSorter sorter;
public JMyTable(JMyTableModel model)
super(model);
setUI(new MyTableUI());
this model = model;
sorter = new TableRowSorter(model);
setRowSorter(sorter);
setColumnSelectionAllowed(false);
setRowSelectionAllowed(true);
setSelectionMode(ListSelectionModel SINGLE_INTERVAL_SELECTION);
setSelectionMode(ListSelectionModel MULTIPLE_INTERVAL_SELECTION);
setDefaultRenderer(Object class new MyRender());
class MyRender extends DefaultTableCellRenderer
public Component getTableCellRendererComponent(JTable table Object value
boolean isSelected boolean hasFocus int row int column)
super getTableCellRendererComponent( table value
isSelected hasFocus row column);
//斑马线
if ((row % ) != )
setBackground(new java awt Color( ));
else
setBackground(java awt Color white);
//选中反蓝
if (isSelected)
setBackground(java awt Color BLUE);
//字体设置
Font font = new Font( 宋体 Font BOLD );
setFont(font);
return this;
/**实现windows式多选习惯*/
class MyTableUI extends BasicTableUI
protected MouseInputListener createMouseInputListener()
return new MyMouseInputHandler();
class MyMouseInputHandler extends MouseInputHandler
private boolean ignoreDrag = false;
public void mousePressed(MouseEvent e)
if (e getClickCount() == )
table clearSelection();
Point origin = e getPoint();
int row = table rowAtPoint(origin);
int column = lumnAtPoint(origin);
if (row != && column != )
if (table isCellSelected(row column))
ignoreDrag = true;
else
super mousePressed(e);
public void mouseClicked(MouseEvent e)
super mouseClicked(e);
public void mouseDragged(MouseEvent e)
if (!ignoreDrag)
super mouseDragged(e);
else
table getTransferHandler() exportAsDrag(table e
DnDConstants ACTION_COPY);
public void mouseReleased(MouseEvent e)
if (ignoreDrag)
super mousePressed(e);
ignoreDrag = false;
super mouseReleased(e);
/**
* <br>
* 方法说明 得到选中的行 <br>
* 输入参数 <br>
* 返回类型
*/
public void valueChanged(ListSelectionEvent e)
// System out println( valueChanged );
super valueChanged(e);
m_nRows = getSelectedRows();
if(m_nRows length == )
// 未选中
m_nRows = null;
m_nRow = ;
return;
if (m_nRows length == )
// 选中一个
m_nRows = null;
m_nRow = getSelectedRow();
if (m_nRow != )
m_nRow = nvertRowIndexToModel(m_nRow);
else
//选中多个
m_nRow = ;
for (int i = ; i < m_nRows length; ++i)
if (m_nRows[i] != )
m_nRows[i] = nvertRowIndexToModel(m_nRows[i]);
repaint();
/**
*<br>方法说明 得到ToolTipText
*<br>输入参数
*<br>返回类型
*/
public String getToolTipText()
Point pt = getMousePosition();
if (pt == null)
return null;
int row = rowAtPoint(pt);
if (row == )
return null;
int index = nvertRowIndexToModel(row);
if (index == )
return null;
Dimension tableSize = getSize();
int width = tableSize width;
if (width > )
width = ;
if (width < )
width = ;
String strText = <><table width=
+ new Integer(width )
+ pt border=\\ \\ cellpadding=\\ \\ cellspacing=\\ \\ style=\\ TABLE LAYOUT: fixed\\ >
+ <font face=\\ dialog\\ size= color=black>
+ model getValueAt(index) toString() + </font></table></> ;
return strText;
package browser;
import java util Vector;
import javax swing table AbstractTableModel;
/**
* 自定义jtablemodel 配合自定义jtable使用
* @author dl
*/
public class JMyTableModel extends AbstractTableModel
protected Vector all = new Vector(); /**所有数据的列表*/
/**定义表头*/
protected String[] columnNames;
/**字段类型数组*/
protected Class[] types;
/**字段可否编辑标记数组*/
protected boolean[] canEdit;
/**
*<br>方法说明 得到表格的列数 继承AbstractTableModel必须实现的方法
*<br>输入参数
*<br>返回类型 int 列数
*/
public int getColumnCount()
return columnNames length;
/**
*<br>方法说明 得到某一列的列名 继承AbstractTableModel必须实现的方法
*<br>输入参数 col 列索引
*<br>返回类型 String 列名
*/
public String getColumnName(int col)
return columnNames[col];
/**
*<br>方法说明 返回字段类型
*<br>输入参数 columnIndex 列索引
*<br>返回类型 Class
*/
public Class getColumnClass(int columnIndex)
return types [columnIndex];
/**
*<br>方法说明 设置字段是否可以编辑
*<br>输入参数 rowIndex 行索引; columnIndex 列索引
*<br>返回类型 boolean
*/
public boolean isCellEditable(int rowIndex int columnIndex)
return canEdit [columnIndex];
/**
*<br>方法说明 得到单元格的内容
*<br>输入参数 rowIndex 行索引; columnIndex 列索引
*<br>返回类型 boolean
*/
public Object getValueAt(int rowIndex int columnIndex)
// TODO Auto generated method stub
return ((Vector)all elementAt(rowIndex)) elementAt(columnIndex);
/**
*<br>方法说明 得到某一行的内容
*<br>输入参数 rowIndex 行索引
*<br>返回类型 boolean
*/
public Object getValueAt(int rowIndex)
// TODO Auto generated method stub
return all elementAt(rowIndex);
/**
*<br>方法说明 清空表格
*<br>输入参数
*<br>返回类型 void
*/
public void empty()
all removeAllElements();
fireTableDataChanged();
/**
*<br>方法说明 设置结果集
*<br>输入参数 temp 结果集
*<br>返回类型 void
*/
public void setRs(Vector vct)
all addAll(vct);
fireTableDataChanged();
/**
*<br>方法说明 得到表格的行数
*<br>输入参数
*<br>返回类型 int 列数
*/
public int getRowCount()
// TODO Auto generated method stub
return all size();
cha138/Article/program/Java/hx/201311/26509
相关参考
这篇文章介绍了js函数排序的代码有需要的朋友可以参考一下 复制代码代码如下:varas=[];assort();//这个排序是按照字典排序//自定义按照数字排序functionsortByN
JTable常见用法细则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!JTable是Swing编程
实现原理对比二进制位 unit Unit; interface uses Windows Messages SysUtils Variants Classes Graphics Contro
代码内含说明(界面是两个文本框textboxtextbox和一个button界面的Load事件button的click事件)usingSystem;usingSystemCollectionsGe
在ExCe12003中,用户可以自定义序列,方法是_____。A、通过“工具”/“自定义”命令B、通过“插入”/“自定义”命令C、通过“数据”/“自定义”命令D、通过“编辑”/“自定义”命令答案:A解
JTable单元格显示Tip 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! importjava
知识大全 为DataGrid自定义分页添加自定义导航和分页信息
为DataGrid自定义分页添加自定义导航和分页信息 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Swinghacks:JTable单击表头选中列 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
堆排序 堆排序定义 n个关键字序列KlK…Kn称为堆当且仅当该序列满足如下性质(简称为堆性质) ()ki≤Ki且ki≤Ki+或()Ki≥Ki且ki≥Ki+(≤i≤>) 若将此序列所存储的向
知识大全 Swinghacks——JTable根据内容调整列宽
Swinghacks——JTable根据内容调整列宽 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!