在Java中使用带编号的名称更改属性

时间:2017-03-29 13:12:35

标签: java variables

我的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

3 个答案:

答案 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);