您的位置:首页 > 其它

如何判断JTable上右键点击所在行并弹出菜单

2010-06-01 19:42 441 查看
1.表格的建立过程

这个过程可以按照自己的初始化

String[] headers = {  "No", "Table Name"  };
Object[][] cellData = null;
DefaultTableModel model = new DefaultTableModel(cellData, headers) {
public boolean isCellEditable(int row, int column) {
// 第N列可以编辑
/*
* if (column == N) { return false; }
*/
// 整个表都不能编辑
return false;
}
};


2.菜单的建立

popupMenu=new JPopupMenu();

tableNameItem=new JMenuItem("");
selectItem=new JMenuItem("Select SQL");
insertItem=new JMenuItem("Insert SQL");
deleteItem=new JMenuItem("Delete SQL");
updateItem=new JMenuItem("Update SQL");
hbmItem=new JMenuItem("hbm xml");
hbmPojoItem=new JMenuItem("Pojo Class");

popupMenu.add(tableNameItem);
popupMenu.addSeparator();
popupMenu.add(selectItem);
popupMenu.add(insertItem);
popupMenu.add(deleteItem);
popupMenu.add(updateItem);
popupMenu.addSeparator();
popupMenu.add(hbmItem);
popupMenu.add(hbmPojoItem);


3.菜单的弹出处理

table.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
if (evt.isPopupTrigger()) {
// 取得右键点击所在行
int row=evt.getY()/table.getRowHeight();

/**
* 取得是表名的那一列
*/
int tableNameColumn=-1;

for(int i=0;i<table.getColumnModel().getColumnCount();i++){
TableColumn selColumn = table.getColumnModel().getColumn(i);
String columnHeader=(String)selColumn.getHeaderValue();

if(columnHeader.equals("Table Name")){
tableNameColumn=i;
break;
}
}

/**
* 取得表名并弹出菜单
*/
if(tableNameColumn!=-1){
/**
* 修改菜单首条的名称
*/
String tableName=(String)table.getValueAt(row,tableNameColumn);
tableNameItem.setText(tableName);

// 弹出菜单
popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
}
}


4.实现的效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: