java - 最小/最大组合框动态功能
问题描述
开发 Java SWT 应用程序。
2个组合框。当指房屋的卧室数量时,一分钟,一最大。
Min有条目,按顺序:(No min, 1, 2, 3, 4, 5, 6)
最大有条目,按顺序:(没有最大,1、2、3、4、5、6)
如果用户将min更改为显示 3 间卧室,则max组合框应更新为显示 (No max, 3, 4, 5, 6) 而不会更改max中选择的内容。
TLDR:为卧室复制 Redfin (redfin.com) 的最小/最大功能。
这听起来很容易,但我一直坚持删除/添加条目,而不会触发一些越界异常并更改列表。
是否有“双”“最小/最大”组合框库?我找不到像我描述的那样的东西。如果不是,什么是解决这个问题的清晰、优雅的解决方案?
到目前为止,我一次只关注一个组合框,但它可能会被概括?:
void UpdateMaxBeds(int index, String text) //index and text of what was selected in min
{
for (int i = 1 ; i <= 6;i++)
{
Integer curr = Integer.getInteger(max_beds.getItem(i));
if(curr<index)
{
max_beds.remove(i);
}
}
}
解决方案
尝试i--
在删除和使用时添加,< max_list.size()
而不是像这样硬编码<= 6
:
void UpdateMaxBeds(int index, String text) //index and text of what was selected in min
{
for (int i = 1; i < max_beds.size(); i++)
{
Integer curr = Integer.getInteger(max_beds.getItem(i));
if(curr<index)
{
max_beds.remove(i);
i--;
}
}
}
i--
防止您在下一次 for 循环迭代中跳过删除的元素之后的元素。max_list.size()
由于删除会更改列表的大小(假设列表),因此可以防止您尝试访问和删除超出范围的元素。
此处未解决但不应忽视的问题:
- 如果在以后的选择中放宽了最小值,则代码不会处理添加元素。(您可以在每次调用之前将最大列表重置为默认值。)
- 如果选定的最大值是删除的元素之一。(您可以将其设置为新的最小值或默认为无最大值。)
推荐阅读
- angular - 需要帮助以角度添加组件
- c++ - 尝试初始化动态数组时出现异常未处理
- python - 对 CSV 应用一个简单的函数并保存多个 csv 文件
- java - 使用带有 set 和 get 方法的布尔值
- java - 是否可以反转列表视图中的顺序?
- python-3.x - 为庞大的数据集创建虚拟对象时,Datalab 内核崩溃
- angular - 放置我的构造函数后,'ngOnInit' 上的分页和排序不起作用
- python - 源错误消息="索引 '('d1', 'i1')' 对索引组件 'NFix' 无效"
- c# - 多个完全松散映射 SolrNet Init
- powershell - 在 RingCentral 中以编程方式创建任务