怎么用java swing MouseListener (如图)双击表头(工号,姓名等),进行表的排序,排序的方法不用写

关键我不知道怎么使用MouseListener达到这样的目的... 关键我不知道怎么使用 MouseListener 达到这样的目的 展开
 我来答
yugi111
2015-08-18 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
给你例子,采纳即可

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class TableFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private final String[] NAMES = { "转正时间", "体检时间" };
private final String[][] DATA = { { "2014-11-08", "2013-11-08" }, { "2014-06-03", "2013-11-08" },
{ "2014-01-01", "2013-11-08" }, { "2014-12-02", "2013-11-08" }, { "2014-11-08", "2013-11-08" },
{ "2014-12-02", "2013-11-08" }, { "2014-10-08", "2013-11-08" }, { "2014-12-02", "2013-11-08" },
{ "2014-09-08", "2013-11-08" }, { "2014-11-08", "2013-11-08" } };
private JTable tableView = null;
private SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");

public TableFrame ( String title )
{
order ();
setTitle (title);
}

private void order ()
{
try
{
for ( int i = 0; i < DATA.length; i++ )
{
for ( int j = i + 1; j < DATA.length; j++ )
{
if (sdf.parse (DATA[i][0]).before (sdf.parse (DATA[j][0])))
{
String[] temp = DATA[i];
DATA[i] = DATA[j];
DATA[j] = temp;
}
}
}
}
catch (ParseException e)
{}
}

private void createTable ()
{
TableModel dataModel = new AbstractTableModel ()
{
private static final long serialVersionUID = 1L;

public int getColumnCount ()
{
return NAMES.length;
}

public int getRowCount ()
{
return DATA.length;
}

public Object getValueAt ( int row, int col )
{
return DATA[row][col];
}

public String getColumnName ( int column )
{
return NAMES[column];
}
};
tableView = new JTable (dataModel);
Date date = new Date ();
final String dt = sdf.format (date);
tableView.setDefaultRenderer (Object.class, new TableCellRenderer ()
{
@Override
public Component getTableCellRendererComponent ( JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column )
{
Component render =
new DefaultTableCellRenderer ().getTableCellRendererComponent (table, value, isSelected,
hasFocus, row, column);
if (dt.equals (table.getValueAt (row, 0)))
{
render.setBackground (Color.RED);
}
return render;
}
});
TableRowSorter<TableModel> tableRowSorter = new TableRowSorter<TableModel> (dataModel);
tableView.setRowSorter (tableRowSorter);
JScrollPane scrollpane = new JScrollPane (tableView);
scrollpane.setPreferredSize (new Dimension (500, 200));
setLayout (new BorderLayout ());
add (scrollpane, BorderLayout.CENTER);
JPanel panel = new JPanel ();
panel.setSize (500, 100);
panel.setLayout (new FlowLayout (FlowLayout.CENTER));
add (panel, BorderLayout.SOUTH);
}

private static void initFrame ( TableFrame tc )
{
tc.setSize (512, 300);
tc.setResizable (false);
tc.setLocationRelativeTo (null);
tc.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
tc.setVisible (true);
}

public static void main ( String[] args )
{
TableFrame tc = new TableFrame ("TableFrame");
tc.createTable ();
initFrame (tc);
}
}
追问
鼠标监听在哪里?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式