最小/最大组合框动态功能

时间:2019-07-03 01:51:47

标签: java

开发Java SWT应用程序。

2个组合框。指一间卧室的数量,一个 min ,一个 max

最小值具有按顺序输入的条目:(无最小值,1、2、3、4、5、6)

最大值具有按顺序输入的条目:(无最大值,1、2、3、4、5、6)

如果用户将 min 更改为显示3间卧室,则 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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

尝试在删除时添加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()使您避免尝试访问和删除超出范围的元素,因为删除会更改列表(假设列表)的大小。

此问题未解决,但不应忽略:

  • 如果在以后的选择中最小化了min,则代码将不处理添加元素。 (您可以在每次调用默认列表之前重置最大列表。)
  • 如果所选的最大值是已删除的元素之一。 (您可以将其设置为新的最小值,也可以将其默认设置为无最大值。)