首页 > 解决方案 > 最小/最大组合框动态功能

问题描述

开发 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);
            }
        }
    }

标签: java

解决方案


尝试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()由于删除会更改列表的大小(假设列表),因此可以防止您尝试访问和删除超出范围的元素。

此处未解决但不应忽视的问题:

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

推荐阅读