我希望这是有道理的,并且有一种更简洁的编程方式。
我有一个 ArrayList of Buttons 和一个 Territories 集合,我试图弄清楚如何遍历 ArrayList 并将按钮上的每个标签设置为每个 Territory 包含的 int 值,然后更改按钮背景的颜色以对应给它的主人。
漫长的方法是为每个按钮设置标签,然后使用 if-else 检查所有者并设置正确的背景颜色,但是这会导致数百行重复代码。
btnEgy.setLabel(Territory.EGYPT.units());
    if(Territory.EGYPT.getOwner().toString().equals("Player 1"))
    {
        btnEgy.setBackground(Color.BLUE);
    }
    else if(Territory.EGYPT.getOwner().toString().equals("Player 2"))
    {
        btnEgy.setBackground(Color.RED);
    }
    else if (Territory.EGYPT.getOwner().toString().equals("Player 3"))
    {
        btnEgy.setBackground(Color.GREEN);
    }
    else if (Territory.EGYPT.getOwner().toString().equals("Player 4"))
    {
        btnEgy.setBackground(Color.YELLOW);
    }
btnEus.setLabel(Territory.E_UNITEDSTATES.units());
    if(Territory.E_UNITEDSTATES.getOwner().toString().equals("Player 1"))
    {
        btnEus.setBackground(Color.BLUE);
    }
    else if(Territory.E_UNITEDSTATES.getOwner().toString().equals("Player 2"))
    {
        btnEus.setBackground(Color.RED);
    }
    else if (Territory.E_UNITEDSTATES.getOwner().toString().equals("Player 3"))
    {
        btnEus.setBackground(Color.GREEN);
    }
    else if (Territory.E_UNITEDSTATES.getOwner().toString().equals("Player 4"))
    {
        btnEus.setBackground(Color.YELLOW);
    }