【发布时间】:2021-11-18 00:49:59
【问题描述】:
当我用鼠标悬停在按钮上方时,我正在尝试使按钮突出显示(通过更改颜色)。 这是我的代码;
import javax.swing.JOptionPane;
final int BUTTON_WIDTH = 100;
final int BUTTON_HEIGHT = 50;
int buttonX = 0;
int COLOR = 150;
void setup() {
size(800, 400);
}
void draw() {
for (int i=0; i<=8; i++) {
drawButtons();
buttonX = buttonX+BUTTON_WIDTH;
}
}
void drawButtons() {
strokeWeight(2);
fill(0, COLOR, COLOR);
rect(buttonX, 0, BUTTON_WIDTH, BUTTON_HEIGHT);
}
我认为如果我添加它会起作用;
if(mouseX<BUTTON_WIDTH && mouseY<BUTTON_HEIGHT){
COLOR = 255;
}
但它不起作用,我试图在鼠标悬停时使按钮突出显示,而其他按钮将保持不变。
【问题讨论】:
-
我在我们的代码中看不到任何事件。您如何获取 mouseX 的更新值,以及您的代码如何知道何时检查位置和更改颜色?这是一个示例,说明如何使用
mouseEntered和mouseExited事件向 swing 组件添加事件:How to put Hover effect on jbutton? 或者您可以跟踪状态何时更改:stackoverflow.com/questions/16733708/… -
我被要求不要在代码中使用数组。我不能使用 jbutton。我正在寻找一种方法,当我的鼠标在它们上方时,我可以突出显示每个矩形(按钮)
-
尝试使用布尔鼠标悬停。当光标在您的按钮上时将其设置为 true,否则将其设置为 false。然后相应地设置按钮的填充颜色。这里有一个例子可以帮助你:processing.org/examples/mousefunctions.html
-
以上链接都不依赖数组?您需要使用某种鼠标事件来捕获鼠标是否在按钮上,或者您需要一个摆动计时器或一个检查鼠标位置的线程,然后您只需切换一个布尔值并根据不同的方式重绘按钮/矩形布尔值:
if(mouseOver) {doSamething;}else{doSomethingElse;}
标签: java processing