我的GUI中有大量的图形元素,我需要根据我的价值改变它们的属性。
我想避免写出switch
,尽管它会起作用,但这似乎很愚蠢。
我在HBox中有一个名为r0 - r200的图形属性,我想改变与其他函数返回值对应的元素的不透明度。
是否有一些聪明的方法,优于:
switch(note.offGraphic()){
case 0:
flat6.setOpacity(1);
break;
case 1:
flat5.setOpacity(1);
break;
case 2:
flat4.setOpacity(1);
break;
case 3:
flat3.setOpacity(1);
break;
case 4:
flat2.setOpacity(1);
break;
case 5:
flat1.setOpacity(1);
case 6:
ok.setOpacity(1);
break;
` and on and on
答案 0 :(得分:0)
您可以创建一个Map,将所有变量分配给特定的Integer(Key),然后根据输入的int获取正确的变量并设置该变量的不透明度。
假设你在每种情况下总是做同样的事情,但当然是在不同的变量上
答案 1 :(得分:0)
这取决于flat1
等等,但如果它们是某个类或接口的实例,则可以使用地图。
(编辑:您似乎正在使用javafx.scene.Node
,您可能不需要任何其他界面。)
假设您的单位等是javafx.scene.Node
的实例,您可以在地图中使用它们:
Map<Integer, Node> map = ...;
map.put( 0, flat6 );
map.put( 1, flat5 );
...
map.put( 6, ok );
...
然后像这样使用它:
Node n = map.get( note.offGraphic() );
if( n != null) {
n.setOpacity(1);
}
或者,您的框可以显示这些元素的表示,即您只需提供元素列表,选择一个元素并在其上调用setOpacity(1)
。
答案 2 :(得分:0)
创建java数组并在相应的索引上插入每个变量。像这样:
Object[] flats = new Object[numberOfFlats];
填写它:
flats[0]=flat6;
flats[1]=flat5;
flats[2]=flat4;
.....................
.........................
........
现在使用它:
((Flat)flats[note.offGraphic()]).setOpacity(1);