PDA

View Full Version : [Java] JPopupMenu su JTable


afsdfdlecosdfsfdcco
20-12-2007, 15:31
Vorrei aggiungere un menu di popup ad una JTable ma non ci riesco (o meglio, ci riesco ma c'e' qualcosa che non va).

Il codice e' questo:



table.add(popup);
table.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if (SwingUtilities.isRightMouseButton(e))
{
popup.setLocation(e.getX(), e.getY());
popup.setVisible(true);
}
}
});

Il primo problema e' che il menu non appare dove vorrei ma da tutt'altra parte (a quanto pare le coordiante ottenute con getXY sono relative alla tabella e non allo schermo in generale). Come posso farlo apparire dove voglio?

Altra domanda: col click destro sulla JTable vorrei selezionare la riga sottostante ed ottenere quello che contiene, come faccio. Vorrei almeno scoprire che riga e'!

Grazie :)

afsdfdlecosdfsfdcco
20-12-2007, 15:54
Ho risolto parzialmente cosi':


table.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if (SwingUtilities.isRightMouseButton(e))
{
JTable t = (JTable) e.getSource();

int row = t.rowAtPoint(e.getPoint());

t.requestFocusInWindow();
t.changeSelection(row, 0, false, false);

popup.setVisible(true);
}
}
});



Resta il problema della posizione :(

banryu79
21-12-2007, 11:24
Hai provato con una cosa del genere?

Point pTable = t.getLocation();
Point pPopup = new Point( pTable.getX() + e.getX(), pTable.getY() + e.getY());

popup.setLocation( pPopup);