【问题标题】:How do i make each of the buttons highlight when i hover悬停时如何使每个按钮突出显示
【发布时间】: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 的更新值,以及您的代码如何知道何时检查位置和更改颜色?这是一个示例,说明如何使用 mouseEnteredmouseExited 事件向 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


【解决方案1】:

您在抽奖中的条件(在绘制按钮之前)是错误的。这是您程序的正确版本:

final int BUTTON_WIDTH = 100;
final int BUTTON_HEIGHT = 50;

int buttonX = 0;

void setup() {
  size(800, 400);
  strokeWeight(2);
}


void draw() {
  for (int i=0; i<=8; i++) {
    
    // The condition was wrong before, now it checks if you are on a button
    if(buttonX <= mouseX && mouseX < buttonX + BUTTON_WIDTH && mouseY<BUTTON_HEIGHT){
      fill(0, 255, 255);
    } else {
      fill(0, 150, 150);
    }

    rect(buttonX, 0, BUTTON_WIDTH, BUTTON_HEIGHT);
    buttonX += BUTTON_WIDTH;
  }
  buttonX = 0; // don't forget to put buttonX at 0 after the for loop, or the next buttons drawn are going to be invisible (on the right of the canva) and you won't see the color change.
}

现在应该没问题了!

【讨论】:

  • 我试过这样做,但这只是将所有按钮更改为不同的颜色,并且永远不会改变它们
  • 这里的问题是 COLOR 变量正在改变,但它不影响 drawButtons 功能,所以在绘制按钮后它正在改变
  • 我已经更新了我的答案,如果你的 COLOR 变量被很好地初始化为全局变量,它应该可以工作。
  • 不要忘记使用我提供的第二个代码,因为第一个是错误的:我只是将您的程序的演变变成您正在搜索的内容;p
  • 我刚试了下,问题依旧。我已经绞尽脑汁好几天了,我真的很想解决这个问题。您的代码中的问题是在绘制矩形后将更改颜色的 if 语句无效。当我打印 COLOR 时,它显示 val 已更改,但这对对象没有影响,希望您理解
猜你喜欢
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2011-01-27
  • 2023-03-09
  • 2015-02-11
  • 1970-01-01
相关资源
最近更新 更多