我希望这是有道理的,并且有一种更简洁的编程方式。
我有一个 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);
}