私は、JFrameの全領域を占めるJListをそれに含むStringを持っています。問題は、ユーザーが右クリックしたときに、JFrame内の項目を超える必要がないことです。アイテムが選択されるたびにポップアップ表示されます。だから、どこかをクリックして右クリックするだけで、メニューがポップアップします。ユーザーがJList内の項目を右クリックしたときにだけメニューがポップアップするようにするにはどうすればよいですか?これは私がこれまで持っているものです。ユーザーがJListの項目を右クリックしたときにメニューをポップアップする方法は?
list.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
if (SwingUtilities.isRightMouseButton(e))
{
JList list = (JList) e.getSource();
int row = list.locationToIndex(e.getPoint());
list.setSelectedIndex(row);
if(list.getSelectedIndex() != -1)
{
PopUpMenu menu = new PopUpMenu();
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
});
Swingを使用するときにJPopupMenuを使用する必要があることを除いて、コードは妥当に見えます。私は問題を理解しているか分からない。問題を示す適切な[mcve]を投稿してください。 – camickr
'JList'が画面全体を占めている場合、リストのどこかをクリックするとマウスイベントが生成されます。 – MadProgrammer