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