gpt4 book ai didi

按下鼠标左键时的 Java 鼠标悬停事件

转载 作者:行者123 更新时间:2023-12-02 01:58:54 24 4
gpt4 key购买 nike

在面板中我有 10*10 切换按钮。我的目标是举办这个 Activity :如果按下鼠标左键并且鼠标位于特定按钮上,则调用“单击按钮”行。因此用户可以轻松选择(单击)多个按钮。

这不起作用(当鼠标移动时更改相同的按钮而不是更改另一个按钮):

import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JToggleButton;

public class ButtonClickOnHover {
public void clickOnButtonOnHover(JToggleButton button) {
button.addMouseMotionListener(new MouseMotionListener() {

@Override
public void mouseMoved(MouseEvent e) {

}

@Override
public void mouseDragged(MouseEvent e) {
button.doClick(0);
}

});
}
}

尝试过这个,不起作用(他的实现有什么问题?):

import java.awt.Color;
import java.awt.Component;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;

public class ButtonClickOnHover {
public void clickOnButtonOnHover(JPanel panel) {
panel.addMouseMotionListener(new MouseMotionListener() {



@Override
public void mouseMoved(MouseEvent e) {

}

@Override
public void mouseDragged(MouseEvent e) {
Point location = MouseInfo.getPointerInfo().getLocation();
JPanel parent = (JPanel) e.getComponent();
SwingUtilities.convertPointFromScreen(location, parent);
Component mouseOver = parent.findComponentAt( location );

if (mouseOver instanceof JToggleButton)
{
JToggleButton button = (JToggleButton)mouseOver;
button.setBackground( Color.YELLOW );
}
}

});

}
}

最佳答案

mouseDragged 事件的源始终是您首先生成 mousePressed 事件的组件,即使您将鼠标移动到另一个组件上也是如此。

如果您想知道鼠标当前位于哪个组件上,那么您需要做一些额外的工作。

类似于:

Point location = MouseInfo.getPointerInfo().getLocation();
Component button = e.getComponent();
JPanel parent = (JPanel)button.getParent();
SwingUtilities.convertPointFromScreen(location, parent);
Component mouseOver = parent.findComponentAt( location );

if (mouseOver instanceof JToggleButton)
{
JToggleButton button = (JToggleButton)mouseOver;
button.setBackground( Color.YELLOW );
}

上面的代码尝试转换鼠标在屏幕上的位置以查找其当前所在的组件。

关于按下鼠标左键时的 Java 鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51912469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com