1. 程式人生 > >JTable中獲取滑鼠移動、點選以及內容改變事件

JTable中獲取滑鼠移動、點選以及內容改變事件

	public void createFieldTable()
	{   
	    Vector<String> header = new Vector<String>();  
	    header.add("欄位名"); 
	    Map<String, Set<String>> tableContentMap = (Map<String, Set<String>>) tableContentMapVec.get(curSelectedTable);
		fieldNameVec.clear();
		fieldSynSetVec.clear();
		fieldTableRowData.clear();
		for(Map.Entry<String, Set<String>> entry:tableContentMap.entrySet()){
			Vector<String> row = new Vector<String>();
			fieldNameVec.add(entry.getKey());
			fieldSynSetVec.add(entry.getValue());
		    row.add(entry.getKey());
		    fieldTableRowData.add(row);
		}  
	    
		// 初始化表格
        this.fieldTable = new JTable(new DefaultTableModel(fieldTableRowData, header)
        {
            @Override
            public boolean isCellEditable(int row, int column) 
            {
                return true;
            }
        });
        fieldTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        this.fieldTable.setSize(this.fieldScrollPane.getWidth(),this.fieldScrollPane.getHeight() - 30);
        this.fieldTable.setLocation(0, 0);
		fieldTable.getSelectionModel().addListSelectionListener(
				new ListSelectionListener() {
					public void valueChanged(ListSelectionEvent e) {
		                //滑鼠按下時bl=true釋放時bl=false
			               boolean bl=e.getValueIsAdjusting();
			               if(!bl){
			            	   //System.out.println(fieldTable.getSelectedRow());
			            	   curSelectedField = fieldTable.getSelectedRow();
			            	   //modifyFieldButton.setEnabled(true);
			            	   //deleteFieldButton.setEnabled(true);
			            	   //createSynTable();
			               }   
						
					}
				}); 
		fieldTable.getModel().addTableModelListener(new TableModelListener(){
            public void tableChanged(TableModelEvent e) {
            	System.out.println(e.getFirstRow() );
            	System.out.println(e.getColumn());
            }
            
        });
		 this.fieldTable.addMouseListener(new MouseAdapter(){  
	            public void mouseClicked(MouseEvent e){
	                int selectedRow = fieldTable.getSelectedRow(); //獲得選中行索引
	                if(selectedRow > -1)
	                	System.out.println("選擇了某行");
	                else
	                	System.out.println("未選擇某行");

	            }
	        });  
        this.fieldTable.addMouseMotionListener(new MouseAdapter(){  
            public void mouseMoved(MouseEvent e) {  
                int row = fieldTable.rowAtPoint(e.getPoint());  
                int col = fieldTable.columnAtPoint(e.getPoint());  
                if(row>-1 && col>-1){  
                    Object value=fieldTable.getValueAt(row, col);  
                    if(null!=value && !"".equals(value))  
                    	fieldTable.setToolTipText( new HtmlMultiLineControl().getTips(value.toString(), 5));//懸浮顯示單元格內容  
                    else  
                    	fieldTable.setToolTipText(null);//關閉提示  
                }  
            }
        });  
        this.fieldScrollPane.setViewportView(this.fieldTable);
	}