JTable中獲取滑鼠移動、點選以及內容改變事件
阿新 • • 發佈:2019-02-15
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); }