java - 如何使用HashMap比较和匹配颜色
问题描述
单击搜索按钮后,我想将颜色搜索结果文本与复选框文本匹配。见图。
目前我可以查看搜索结果文本颜色,但单击搜索按钮后它与复选框文本颜色不匹配。下面的代码仅适用于 Search Car Results 文本区域和与此 HashMap carDetails 的键匹配的名为 CarBrand 的类。我不确定如何使用 HashMap 比较和匹配它的颜色。任何建议都会很棒!
import java.awt.Color;
import java.swing.tree.DefaultTreeCellRenderer
public final class CarDetails extends DefaultTreeCellRenderer
{
private final Color defaultColor;
private final HashMap<String, Color> carDetails = new HashMap<>();
public CarDetails()
{
int i = 0;
defaultColor = getBackground(); //default color
int [][] rgb = {
{ 200, 000, 200 },
{ 000, 140, 000 },
{ 000, 200, 200 }
};
for (CarBrand car: CarModel.getCarBrandDetails()) {
carDetails.put(car.getCarBrand(), new Color(
rgb[i][0], rgb[i][1], rgb[i][2]));
i++;
// TODO this part is what I am not sure.
if (carDetails.containsKey(car.getCarBrand()) && carTable != null) {
for (Component c : carTable.getComponents()) {
if (c.getName().equals(car.getCarBrand())) {
c.setForeground(carDetails.containsObject(new
Color(rgb[i][0], rgb[i][1], rgb[i][2])));
}
}
}
}
}
}
我希望输出将搜索汽车结果的颜色编码与复选框文本(本田、现代、宝马)相匹配,如下图所示。
解决方案
我同意 Andrew Thompson 的观点,缺少很多代码来重现您的问题。
您应该检查您的条件是否正确(if 语句)。缺少 carTable 的声明,因此我们无法验证它是如何构建的。您使用 Component.getName(),您确定这包含您期望的值吗?查看what-is-java-awt-component-getname-and-setname-used-for 默认情况下不填充,因此如果您之前使用预期值填充它,则可以使用。
假设 c.getName() 返回汽车品牌的名称,您可以执行以下操作:
for (CarBrand car: CarModel.getCarBrandDetails()) {
carDetails.put(car.getCarBrand(), new Color(
rgb[i][0], rgb[i][1], rgb[i][2]));
i++;
}
if (carTable != null) {
for (Component c : carTable.getComponents()) {
if(carDetails.containsKey(c.getName()) {
c.setForeground(carDetails.get(c.getName())));
}
}
}
在您的代码中,您没有使用之前填写的 carDetails 地图中的值。通过调用“carDetails.get()”方法,您可以重用创建的 Color 对象。
推荐阅读
- symfony - 如何获取定义为handleRequest方法使用的闭包函数的表单验证组?
- microsoft-graph-api - BadRequest:无法执行 Skype 后端请求 GetThreadS2SRequest
- json - 如何在包含接口类型集合的类上应用 JSON 补丁文档
- python - 插入新行并重新启动获取代码时如何从 SQL Server 数据库中获取数据?
- ios - SwiftUI:如何在搜索栏的文本更改时触发 api 调用以检索数据源
- angular - 由于异常,Angular 防护未重定向到特定页面
- python - Python 多处理程序没有充分利用 Windows 上的 CPU 资源
- python - Python中更高效/简化的数据框滚动窗口计算
- hive - 将 Hive 输出存储为文本文件
- python-2.7 - AttributeError:“模块”对象没有属性“FalseNegatives”