codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SelRow extends JFrame {
private class MouseClick extends MouseAdapter {
@Override
public void mousePressed(MouseEvent me) {
showPopup( me );
}
@Override
public void mouseReleased(MouseEvent me) {
showPopup( me );
}
}
private JTable table;
private JPopupMenu pm;
private String[][] data = {{"R1, C1", "R1, C2", "R1, C3"},
{"R2, C1", "R2, C2", "R2, C3"},
{"R3, C1", "R3, C2", "R3, C3"},
{"R4, C1", "R4, C2", "R4, C3"}};
private String[] colonne = {"Colonna1", "Colonna2", "Colonna3"};
public SelRow() {
Container c = getContentPane();
c.setLayout( new BorderLayout() );
table = new JTable(data, colonne);
table.addMouseListener( new MouseClick() );
table.setRowSelectionAllowed(true);
table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
JScrollPane jsp = new JScrollPane( table );
pm = creaMenu();
c.add(jsp, BorderLayout.CENTER);
setTitle("Prova popup e selezione");
setSize(800, 600);
setDefaultCloseOperation( EXIT_ON_CLOSE );
setLocationRelativeTo( null );
setVisible( true );
}
private JPopupMenu creaMenu() {
JPopupMenu menu = new JPopupMenu();
for(int i=0; i<3; i++) menu.add( new JMenuItem("Item " + i) );
return menu;
}
private void showPopup(MouseEvent me) {
if (pm.isPopupTrigger(me)) {
Point p = me.getPoint();
int rowToDelete = table.rowAtPoint(p);
int colp = table.columnAtPoint(p);
if ((rowToDelete != -1) && (colp != -1)) {
pm.show(table, p.x, p.y);
table.setRowSelectionInterval(rowToDelete, rowToDelete);
}
}
}
public static void main(String[] args) {
SelRow sr = new SelRow();
}
}
A me funziona.
Ciao.