好的。对于我的计算机科学项目,我们必须制作一个给老师留下深刻印象的程序或游戏。我选择了Battleship,并使用Netbeans Design UI进行了UI的基本概述。
因此,从本质上讲,我是将JPanel分配给船时将其设置为蓝色的方法之一,我不想编写400行代码来描述是否可以将船分配给每个可能的盒子的语句,我想知道是否有一种方法可以在JPanel名称中引用变量的值。我会告诉你我的意思。
所以var是已经从用户那里检索到的船只的位置。 pA1将是A1的玩家面板。
public static void pSetShip(String var){
var=("p"+var);
if (var.equals("pA1")){
pA1.setBackground(Color.BLUE);
}
}
有没有什么可能的方法,而不是使用if语句设置每个单独的框,
public static void pSetShip(String var){
var=("p"+var);
(VALUE OF VAR VARIABLE).setBackground(Color.BLUE);
}
任何帮助将不胜感激!
答案 0 :(得分:2)
是的,假设它们实现了通用的接口。 但是,您需要将它们存储在某些东西中。假设它们的类型为JComponent
,我将使用Map<String, JComponent>
之类的
static Map<String, JComponent> map = new HashMap<>();
static {
map.put("pA1", pA1);
// ... for all valid components.
}
然后您可以像使用它
public static void pSetShip(String var){
map.get("p"+var).setBackground(Color.BLUE);
}