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.实现的效果如下: