Java 如何在JScrollPane中添加双击功能?
我正在使用JScrollPane并通过Java 如何在JScrollPane中添加双击功能?,java,swing,jscrollpane,double-click,mouselistener,Java,Swing,Jscrollpane,Double Click,Mouselistener,我正在使用JScrollPane并通过模型填充它。现在我想添加双击侦听器 在这里我是如何尝试 PlayListScrollPane.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent mouseEvent) { JList theList = (JList) mouseEvent.getSource
模型填充它。现在我想添加双击侦听器
在这里我是如何尝试
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());
}
}
}
});
playlicScrollPane
是JScrollPane
。。。
上述方法永远不会激发。。。
谢谢。您的问题是,您的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
}
}
});
您可能应该将侦听器添加到视口,而不是滚动窗格
试试这个:
PlayListScrollPane.getViewport().addMouseListener(new MouseAdapter() { ...
而不是:
PlayListScrollPane.addMouseListener(new MouseAdapter() { ...
JList theList=(JList)mouseEvent.getSource()
滚动窗格中似乎显示了一个JList。JList使用鼠标侦听器来处理鼠标事件。如果要双击JList进行某些处理,请将鼠标侦听器添加到JList
实际上,看看有没有更好的方法。它将允许您创建一个操作,然后通过双击或Enter键支持调用该操作,因为设计良好的GUI应该通过鼠标或键盘工作。好的。我修复了它,实际上我在错误的类中添加了MouseListener
。我只是遵循这一点,实现了我想要的