i created a java swing application that have multiple jTables. I added multiple mouse listeners for making context menu with anonymous classes. But each time the action listeners are pointing to the first table only. Please help. Each time iam getting is the updated value for first table .
- i have 3 Jtables named jTableNum1, jTableNum2, jTableNum3.
- what i want is cut, copy, paste function for each cell in my three Jtables.
- so i created popumenus & called like:
jTableNum1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
rowH = jTableNum1.getSelectedRow();
if (e.isPopupTrigger()) {
highlightRow(e);
doPopup(e);
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
highlightRow(e);
doPopup(e);
}
}
protected void doPopup(MouseEvent e) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
protected void highlightRow(MouseEvent e) {
JTable table = (JTable) e.getSource();
Point point = e.getPoint();
int row = table.rowAtPoint(point);
int col = table.columnAtPoint(point);
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(col, col);
}
});
popupMenu1.add(new clearFuncs (1,rowH));// arg1= tableNumber , arg2 = the highlighted row)
-
-// similiarly for jTableNum2 & jTableNum3
public class clearFuncs extends AbstractAction {
int num;
int rowH;
public clearFuncs (int num,int r) {
this.num = num;
this.rowH = r;
putValue(NAME, "Clear");
}public clearFuncs (int num) {
this.num = num;
putValue(NAME, "Clear");
}
@Override
public void actionPerformed(ActionEvent e) {
int row;
switch(num){
case 1: row = jTableNum1.getSelectedRow();
System.out.println("row = "+rowH);
jTableNum1.setValueAt("", row, 0);
break;
case 2: row = jTableNum2.getSelectedRow();
System.out.println("row = "+row);
jTableNum2.setValueAt("", row, 0);
break;
case 3: row = jTableNum3.getSelectedRow();
System.out.println("row = "+row);
jTableNum3.setValueAt("", row, 0);
break;
}
}
}
-