如何获得 Java Swing 列表中未选中的右键单击项?
How to get a right-click item which is not selected in Java Swing's list?
我有一个 Java Swing Jlist,我知道如何处理 "selected item" 上的左键单击和右键单击,但我的问题是:如果当前选择了项目 1 ,但是当我右键单击项目 3 时,如何获取该项目的 info/identity ?例如,在下图中,如您所见,
Salsa_2015_03_01_1 被选中,但如果现在我用鼠标右键单击 Salsa_2015_03_01_3,如何在以下示例代码中获取该项目的信息:
list.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
String File_Path=File_Map.get(list.getSelectedValue().toString()).getAbsolutePath();
if (SwingUtilities.isLeftMouseButton(e))
{
// Out("Left-Click");
}
else if (SwingUtilities.isRightMouseButton(e))
{
}
}
});
现在MouseEvent e只包含选中的项目,有没有办法检测鼠标点击的项目是哪一个?我想要实现的是节省一个步骤:左键单击项目 3,然后右键单击它以进行额外处理。但是我想跳过左键单击。
我相信你想要JList#locationToIndex
JavaDocs 中的修改示例
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
int index = list.locationToIndex(e.getPoint());
System.out.println("Item " + index);
}
}
我有一个 Java Swing Jlist,我知道如何处理 "selected item" 上的左键单击和右键单击,但我的问题是:如果当前选择了项目 1 ,但是当我右键单击项目 3 时,如何获取该项目的 info/identity ?例如,在下图中,如您所见,
Salsa_2015_03_01_1 被选中,但如果现在我用鼠标右键单击 Salsa_2015_03_01_3,如何在以下示例代码中获取该项目的信息:
list.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
String File_Path=File_Map.get(list.getSelectedValue().toString()).getAbsolutePath();
if (SwingUtilities.isLeftMouseButton(e))
{
// Out("Left-Click");
}
else if (SwingUtilities.isRightMouseButton(e))
{
}
}
});
现在MouseEvent e只包含选中的项目,有没有办法检测鼠标点击的项目是哪一个?我想要实现的是节省一个步骤:左键单击项目 3,然后右键单击它以进行额外处理。但是我想跳过左键单击。
我相信你想要JList#locationToIndex
JavaDocs 中的修改示例
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
int index = list.locationToIndex(e.getPoint());
System.out.println("Item " + index);
}
}