Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改Java中带有编号名称的属性_Java_Variables - Fatal编程技术网

更改Java中带有编号名称的属性

更改Java中带有编号名称的属性,java,variables,Java,Variables,我的GUI中有大量的图形元素,我需要根据我的值更改它们的属性 我想避免写出开关,虽然它可以工作,但看起来很愚蠢。 我在HBox中有一个名为r0-r200的图形属性,我想更改元素的不透明度,该元素对应于其他函数返回的值 有没有比以下更聪明的方法: switch(note.offGraphic()){ case 0: flat6.setOpacity(1); break; case 1: flat5.setOpacity(1);

我的GUI中有大量的图形元素,我需要根据我的值更改它们的属性

我想避免写出
开关
,虽然它可以工作,但看起来很愚蠢。 我在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

您可以创建一个映射,将所有变量指定给一个特定的整数(键),然后根据输入的int获取正确的变量并设置该变量的不透明度


假设您在每种情况下总是做相同的事情,但是变量不同,当然这取决于
flat1
等是什么,但是如果它们是某个类或接口的实例,您可以使用映射

(编辑:看起来您正在使用
javafx.scene.Node
您可能不需要任何额外的接口。)

假设您的平面等是
javafx.scene.Node
的实例,您可以在地图中使用它们:

Map<Integer, Node> map = ...;
map.put( 0, flat6 );
map.put( 1, flat5 );
...
map.put( 6, ok );
...

或者,您的框可以显示这些元素的表示形式,也就是说,您只需提供一个元素列表,选择一个元素并在其上调用
setOpacity(1)

创建java数组并在相应的索引上插入每个变量。像这样:

Object[] flats = new Object[numberOfFlats];
要填充它,请执行以下操作:

    flats[0]=flat6;
        flats[1]=flat5;
        flats[2]=flat4;
    .....................
.........................
........
现在要使用它:

((Flat)flats[note.offGraphic()]).setOpacity(1);

你可以把你的元素做成一个数组,然后根据索引访问它,然后它是一行你可以把几乎所有的java都变成一行…什么是
note
offGraphic()
返回什么?可能有一种比使用映射更好的方法,但是在不知道代码结构的情况下很难判断。为什么要使用映射?我想简单的数组/列表也可以,我个人更喜欢使用映射处理这样的情况。这可能有性能问题吗?注意:您不能在
对象上调用
setOpacity(1)
。是的,但您可以将对象强制转换为适当类型的平面引用。
((Flat)flats[note.offGraphic()]).setOpacity(1);