java - 使用反射在运行时更改 JLabel 的背景

标签 java swing reflection jlabel

我需要动态更改 JLabels 的背景。

我的类(class)中有 70 个 JLabel。所有 JLabels 都代表一些特定的项目。项目名称与JLabel 的变量相同。已售商品名称保存在数据库中。如果我运行一个查询,将返回已售商品的数组。与 JLabel 相同的已售商品应更改背景。休息不会改变。

我已经得到了所有字段的变量,如下所示:

  Field fld[] = BlueLine.class.getDeclaredFields();  
   for (int i = 0; i < fld.length; i++)  
   {
   System.out.println("Variable Name is : " + fld[i].getName());
   }

如何将我的 fld 转换为 JLabel 并在满足特定条件时更改 JLabel 的背景?例如:

   if(fld[i] == label5){
   label5.setBackground.(Color.red);
   } // or something like this. ?

任何大纲都会有帮助。

最佳答案

目前您只是查看字段本身 - 您对这些字段的感兴趣。例如:

Object value = fld[i].get(target); // Or null for static fields
if (value == label5) {
    ...
}

此处target 是对要从中获取值的字段的对象的引用。对于静态字段,只需使用 null,如注释所示。

目前还不清楚所有这些都是一个好主意,但是 - 可以通过反射解决的问题通常可以通过不同的方式解决更好。目前我们确实没有足够的背景信息来向您提供具体建议,但我建议您至少尝试考虑更简洁的设计。

关于java - 使用反射在运行时更改 JLabel 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22474969/

相关文章:

java - jfilechooser - 将目录设置为文件中的路径

Java对象: Dynamic type not visible

java - 追加到 JTextArea

java - 如何使用java反射过滤方法

java - 更改 PriorityBlockingQueue 中的现有任务优先级

java - Springboot - 使用 Camel 跟踪器创建自己的 Opentracing 范围

java - Jtable cellEditor 集不适用于我的表模型定义

java - JTable 中的数据分页

android - 向后兼容的 BackupAgent

java - 如何使用 Object[] 数组调用 MethodHandle.invokeExact()?