【问题标题】:Getting a random colour when selecting a button in matching pairs game在配对游戏中选择按钮时获得随机颜色
【发布时间】:2019-03-30 22:24:36
【问题描述】:

我正在使用按钮创建配对游戏。当按钮被点击时,它们下面应该有不同的颜色,应该有 8 种不同的颜色(因为有 16 个按钮,按钮下面的颜色有 2 种是相同的)。目前,当我点击按钮时,它们下面的颜色都是相同的。

我试图设置我的函数,将按钮的实际颜色设置为红色只是为了测试它,但它仍然没有工作。我有一个叫做翻转的函数,它的作用就像把一张卡片翻过来一样,所以当它用真值调用时,按钮应该显示实际颜色,而当它不被调用时,按钮。

【问题讨论】:

    标签: java


    【解决方案1】:

    注意这段代码:

    public class ColorButton extends JButton implements ActionListener{
        Color actualColour;  // never assigned a value on object creation
        Color grey = new Color(128, 128, 128);
        Color black = new Color(0, 0, 0);
    
        //...
    
        Color stateBack = grey;
        Color stateFront = actualColour;  // actualColour is null here
        Color stateFinished = black;
    
        // ....
    

    在您的测试代码中,您尝试将按钮更改为的颜色 stateFront 为 null,因为它分配了实际颜色,在创建对象时从未初始化,因此不会发生颜色变化

    是的,您可以稍后将有效的 Color 对象分配给 actualColour,但 stateFront 保持为空,因为它的引用从未更改。

    【讨论】:

    • 啊,是的,这是有道理的。我尝试使用setDrawColorsetActualColours 方法设置它,但它似乎不起作用。据我了解, Main 类应该分配不同的颜色(尽管在这种情况下它只是用于测试的红色),然后应该将其传递给 setDrawColor 函数,该函数就像一个设置器,然后实际上设置这个。我想我已经这样做了,所以我不太确定我哪里出错了,除非它是不同的。
    • @Kappa123:setDrawColor(...) 方法设置了 actualColour 字段,但对 stateFront 字段没有任何作用(正如我在上面的回答中以圆形方式说明的那样)。
    • 啊,我想我明白你在说什么了。所以我需要将actualColourvariable 初始化为某种颜色,以便可以更改它? IE。如果我做Colour actualColour = Color.BLUE 然后在actionPerformed 方法中调用flip(true),所有的方块都会是蓝色的。
    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 2023-03-18
    • 2016-08-19
    • 2013-07-15
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多