我正在使用JScrollPane并通过Model
填充它。现在我要添加Double CLick Listener
我在这里尝试...
PlayListScrollPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
JList theList = (JList) mouseEvent.getSource();
if (mouseEvent.getClickCount() == 2) {
int index = theList.locationToIndex(mouseEvent.getPoint());
if (index >= 0) {
Object o = theList.getModel().getElementAt(index);
System.out.println("Double-clicked on: " + o.toString());
}
}
}
});
PlayListScrollPane
是JScrollPane
...
以上方法永远不会爆发......
感谢。
答案 0 :(得分:0)
您的问题是,您的clickCount应该是不在侦听器内的类的变量。就像:
private clicksCount = 0;
如果列表也被实例化,你可以访问它。然后:
PlayListScrollPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent mouseEvent) {
clicksCount++;
if (clicksCount == 2) { //Or clicksCount%2==0
int index = myJList.locationToIndex(mouseEvent.getPoint());
if (index >= 0) {
Object o = theList.getModel().getElementAt(index);
System.out.println("Double-clicked on: " + o.toString());
}
clicksCount=0;//If you use clickCounts%2==0 you don't need this line
}
}
});
答案 1 :(得分:0)
您可能应该将侦听器添加到视口而不是滚动窗格
试试这个:
PlayListScrollPane.getViewport().addMouseListener(new MouseAdapter() { ...
而不是:
PlayListScrollPane.addMouseListener(new MouseAdapter() { ...
答案 2 :(得分:0)
JList theList =(JList)mouseEvent.getSource();
看起来你在滚动窗格中显示了一个JList。 JList使用MouseListener,因此它将处理MouseEvents。如果要通过双击对JList进行一些处理,则将MouseListener添加到JList。
实际上,请查看List Action以获得更好的方法。它允许您创建一个Action,然后使用双击或Enter键支持调用Action,因为精心设计的GUI应该可以通过鼠标或键盘工作。
答案 3 :(得分:0)
好的..我修好了,实际上我在错误的班级中添加了MouseListener
。我只是按照这个tut来实现我想要的。