春风博客

春天里,百花香...

导航

<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

公告

MAIL: junglesong@gmail.com
MSN: junglesong_5@hotmail.com

Locations of visitors to this page

常用链接

留言簿(11)

随笔分类(224)

随笔档案(126)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

在JTable上点击右键并弹出菜单的实现

本人在做一个在JTable上点击右键弹出菜单的程序时,遇到了这样的问题--菜单首项需要根据点击的表格行的"表名列"改变,这需要我们做一点小小的工作,其实就是根据点击的位置推算所在行,好了,废话少说,看代码吧.

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;
      }
    };

    table = new JTable(model);

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

posted on 2007-06-12 22:23 sitinspring 阅读(8135) 评论(1)  编辑  收藏 所属分类: Swing

评论

# re: 在JTable上点击右键并弹出菜单的实现 2007-09-17 09:56 千里冰封

另外再加一个让你右链点中的那一行设为选中状态,就更好了  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
sitinspring(http://www.blogjava.net)原创,转载请注明出处.