每次按下按钮时显示颜色(lambda表达式)

时间:2019-01-14 06:45:12

标签: java button lambda

每当按下按钮时,我都要设置某种颜色。现在,用户可以编写一个int并显示相应的颜色(而不必每次都键入相应的int)。 我想更改此设置。每次用户单击按钮时,都会显示下一种颜色,但是我不知道如何重写代码。我尝试了一次while和for循环,但是lambda中使用的变量存在问题表达式(显然应该是最终的)?

board.setButton2Text("Select"); 
board.setButton2Action(() -> {
    int c = 0;
    while(!(c > 0 && c < 7)) {
        try {
            c = IO.inputInt("Type an int ranging from 1 to 6");
        } catch (RuntimeException e) {
            continue;
        }
    }
    currentCode.setColor(selectedCircle, c);
    drawCode(X_START, Y_START + LINE_SPACING * (6 - currentTry), currentCode);
});

现在看起来像这样

enter image description here

1 个答案:

答案 0 :(得分:1)

更改对按钮单击做出反应的代码。该代码应:

  1. 获取当前设置的颜色。
  2. 在该颜色编号中添加一个。
  3. 如果该新数字超出限制(0-7),则循环切换。
  4. 将颜色设置为新的颜色编号。

类似这样的东西:

board.setButton2Action( () -> {
        // On each click of the button, rotate to the next color in a sequence of colors numbered 0-7. 
        int c = currentCode.getColor( … ) ; // TODO: Add assertion tests to verify you get back a valid value as expected.
        c = ( c + 1 ) ;  // Increment the color.
        if( c == 8 ) {  // If past the limit…
            c = 0 ;     // …go back to first number.
        }
        currentCode.setColor( selectedCircle , c ) ;
        drawCode( X_START , Y_START + LINE_SPACING * ( 6 - currentTry ) , currentCode ) ;
    }
);

我在这里看不到您的lambda问题。如我在此处所示,更改为代码不会在lambda范围之外涉及任何其他对象。