Java Swing动态字段选择

时间:2014-08-18 18:52:30

标签: java swing combobox

我不确定如何提出这个问题,而且我确定如果有人能指出我的问题我还有其他解决办法吗?正确的方向,我很感激。

在任何情况下,我遇到的问题是我有一个String []列表(称为" projects"),我用它来填充组合框。我想使用组合框中的选择来动态更改GUI面板中列出的表单字段。

到目前为止,我的方法还不够动态,因为当我完成时,我将从组合框中选择近100个。到目前为止,我已经在框中测试了3个选项,但是将其扩展到100将涉及大量代码,我认为必须有其他解决方案,对吧?我只是不知道那个解决方案是什么。

String[] projects = {"Select a project...", "Option1", "Option2", "Option3"};

String[] Option1= {"phone", "maxphv"};
String[] Option2= {"address1", "address2", "house", "predir", "street", "strtype", "postdir", "apttype", "aptnbr"
        , "city", "state", "zip"};
String[] Option3= {"phone"};

ArrayList<String> fieldslist, fieldslbllist;

理想情况下,我想从项目String []组合框中选择项目的名称,并引用该名称作为包含我想在面板中显示的字段的另一个列表的名称。 / p>

但我从其他问题的阅读中得知,一旦编译代码,变量的名称就无关紧要了。

此时,我有一组代码来清除面板并动态选择字段,但我仍然需要为100个选项中的每一个手动编码替换。我想这并不可怕,但我认为可能有一种更好的方式让我不知道。

public void resetFields() {
    fieldslist.clear();
    fieldslbllist.clear();
}

public void setFields() {
    if (project.getSelectedIndex() == 0) {
        resetFields();
    }
    else if (project.getSelectedIndex() == 1) {
        resetFields();
        for (int i = 0; i <= Option1.length; i++) {
            fieldslist.add(Option1[i]);
            fieldslbllist.add(Option1[i]+"lbl");
        }
    }
    else if (project.getSelectedIndex() == 2) {
        resetFields();
        for (int i = 0; i <= Option2.length; i++) {
            fieldslist.add(Option2[i]);
            fieldslbllist.add(Option2[i]+"lbl");
        }
    }
//... onward to 100

以上只是一个循环,它在组合框中选择新选项时重置显示,然后遍历OptionX String []列表中的选项,并将值添加到字段Array中。

这是处理动态UI编码的可行方法吗?并且,有没有办法设置它所以我只需要指定哪些字段属于每个值,然后不必为setFields()中的每个可能的project.getSelectedIndex()值编写一个部分?

1 个答案:

答案 0 :(得分:1)

使用CardLayouthere,动态更改表单。鉴于大量替代方案,请在可能允许您使用两个相关控件的选项中查找分层细分,如here所示。

image