java - 我如何迭代颜色数组,以便每次单击鼠标时颜色都会改变?

标签 java arrays eclipse for-loop

所以我想在鼠标单击时迭代颜色数组,当它到达数组末尾时返回到数组中的 0 空间。

 private Color _color = Color.BLACK;
 private Color[] _arrayOfColors = new Color[]{Color.GREEN, Color.RED, Color.BLUE, Color.BLACK};

@Override
public void paint(Graphics g)
{
    g.setColor(_color);
    g.drawRect(_x, _y, _size, _size);
}

@Override
public void mousePressed(MouseEvent mev)
{
    for(int i = 0; i<_arrayOfColors.length; i++)
    {
        _color = _arrayOfColors[i];
    }
}

最佳答案

Color[] colors = new Color[10]; //your array of colors
Color currentColor; //current color being displayed
int index = 0; //IMPORTANT: prevents your loop from starting at 0 each time

public void mousePressed(MouseEvent e) {
     currentColor = colors[index <= colors.length-1? index : index = 0]; //picks next color
     index++; //increases index (prepares for next mouse click)
     repaint(); //paint with new color
}

public void paint(Graphics g) {
     g.setColor(currentColor);
     g.drawRect(_x, _y, _size, _size);
 }

currentColor = colors[index <= colors.length-1? index : index = 0];一开始可能看起来很棘手,但让我来分解一下:

index <= colors.length-1? index : index = 0称为三元运算符。这是一个 3 步过程

  1. 提问:index <= colors.length-1? ( boolean 值)
  2. 设置一个值,如果问题为真则返回
  3. 设置一个值,如果问题为 false,则返回

我们的索引从 0 开始。由于 0 <= 9 (colors.length-1),它将返回索引。 currentColor = colors[index];

尽管如此,假设我们的索引为 10。由于我们的数组仅从 0 到 9,因此我们需要在使用它之前将其设置回 0。 currentColor = colors[index = 0];

关于java - 我如何迭代颜色数组,以便每次单击鼠标时颜色都会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186123/

相关文章:

java - 如何从 Jdeveloper w ADF 转换/迁移到替代/优雅的 IDE (Eclipse)

android - 使用了不同的 Landroid/support/v4/app/FragmentActivity;预验证期间 : Android + Fragments + JUnit + Maven

java - 您可以使用 HIbernate 获取类型 LAZY 但有时使用 EAGER

java - 尝试使用 Java 中的 RandomAccessFile 复制文件

c - 在函数 C 中访问数组

arrays - 为什么 (Array<Character> = []) 是 Array<Bool> == true

java - 如何将 maven 与 slack 集成?

java - 从 AlertDialog 按钮切换 Activity

javascript - 有没有一种运行时更有效的方法来迭代这个数组? (JavaScript)

java - STS - Spring Boot 应用程序 - 请求的资源不可用