知识大全 自定义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函数排序的实例代码

这篇文章介绍了js函数排序的代码有需要的朋友可以参考一下 复制代码代码如下:varas=[];assort();//这个排序是按照字典排序//自定义按照数字排序functionsortByN

知识大全 JTable常见用法细则

JTable常见用法细则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!JTable是Swing编程

知识大全 极快的正整数排序函数

  实现原理对比二进制位  unit Unit;  interface  uses Windows Messages SysUtils Variants Classes Graphics Contro

知识大全 c# 实现自定义属性改变触发自定义事件

  代码内含说明(界面是两个文本框textboxtextbox和一个button界面的Load事件button的click事件)usingSystem;usingSystemCollectionsGe

在ExCe12003中,用户可以自定义序列,方法是

在ExCe12003中,用户可以自定义序列,方法是_____。A、通过“工具”/“自定义”命令B、通过“插入”/“自定义”命令C、通过“数据”/“自定义”命令D、通过“编辑”/“自定义”命令答案:A解

知识大全 JTable 单元格显示Tip

JTable单元格显示Tip  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importjava

知识大全 为DataGrid自定义分页添加自定义导航和分页信息

为DataGrid自定义分页添加自定义导航和分页信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Swinghacks:JTable单击表头选中列

Swinghacks:JTable单击表头选中列  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 排序 - 选择排序 - 堆排序(一)

  堆排序  堆排序定义  n个关键字序列KlK…Kn称为堆当且仅当该序列满足如下性质(简称为堆性质)  ()ki≤Ki且ki≤Ki+或()Ki≥Ki且ki≥Ki+(≤i≤>)  若将此序列所存储的向

知识大全 Swinghacks——JTable根据内容调整列宽

Swinghacks——JTable根据内容调整列宽  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!