How to adapt left-click action on JTable to the right-click in java?
-
18-06-2021 - |
سؤال
I have a JTable
which I want to have left-click and right-click JPopupMenu
on it.
Normaly by left-click on the JTable you can select a row. I would like to do the same with right-click plus show up a popup menu.
Does anybody know how to do this?
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
//this line gives wrong result because table.getSelectedRow() stay alwase on the same value
codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
JPopupMenu popup = createRightClickPopUp();
popup.show(e.getComponent(), e.getX(), e.getY());
}else{
codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
codeTextArea.setText(codeModel.getCodeContents());
}
}
});
المحلول
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) { //or mouseReleased(MouseEvent e)
if (SwingUtilities.isRightMouseButton(e)) {
//-- select a row
int idx = table.rowAtPoint(e.getPoint());
table.getSelectionModel().setSelectionInterval(idx, idx);
//---
codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
JPopupMenu popup = createRightClickPopUp();
popup.show(e.getComponent(), e.getX(), e.getY());
}else{
codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
codeTextArea.setText(codeModel.getCodeContents());
}
}
});
نصائح أخرى
please read my question JTable with JPopupMenu
most important is ListSelectionModel's type
minor for your question, but both answers there are correct and great
You can determine the clicked row easily enough using JTable.rowAtPoint(event.getPoint()) in your mouse listener.
لا تنتمي إلى StackOverflow