春風博客

          春天里,百花香...

          導航

          <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 閱讀(8157) 評論(1)  編輯  收藏 所屬分類: Swing

          評論

          # re: 在JTable上點擊右鍵并彈出菜單的實現 2007-09-17 09:56 千里冰封

          另外再加一個讓你右鏈點中的那一行設為選中狀態,就更好了  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 通化市| 宁化县| 缙云县| 定南县| 富源县| 吐鲁番市| 红安县| 工布江达县| 鹿邑县| 来安县| 个旧市| 新巴尔虎右旗| 惠安县| 兰西县| 平舆县| 乌鲁木齐市| 都江堰市| 太仆寺旗| 自治县| 乐山市| 天柱县| 乌恰县| 五原县| 都安| 永新县| 蒙城县| 安徽省| 东乌| 兖州市| 富宁县| 马尔康县| 恩施市| 额济纳旗| 叙永县| 镇远县| 惠安县| 罗江县| 汽车| 贵阳市| 南皮县| 迁安市|